2014-12-15 5 views
1

поэтому у меня есть этот код, который входной материал и сохранить его в listarrayПустой массив при вызове функции (Java)

public class manage extends admin{ 
public ArrayList<Game> thegame = new ArrayList<Game>(); 
public List<Game> ajout_jeux() { 
    boolean loop = true; 

    while(loop) { 
     Scanner agame = new Scanner(System.in); 
     System.out.print("name: \n"); 
     String Cgame = agame.nextLine(); 
     Scanner qty = new Scanner(System.in); 
     System.out.print("the qty: \n"); 
     int CQty = qty.nextInt(); 


     Console wertgame = new Console(Cgame,Cqty); 
     thegame.add(new Game(Cgame,Cqty)); 

     System.out.println("continue?"); 
     Scanner autre = new Scanner(System.in); 
     int continu = other.nextInt(); 
     if(continu==1) { 

     } 
     else if(continu==2) { 
      Main.menu(); 
     } 
    } 

    return thegame; 
} 

и метод в этом классе, который должен напечатать массив:

public void information(List<Game> thegame) { 
     System.out.print(thegame); 

    }} 

А потом, из другого класса мне нужно, чтобы назвать это так

manage management = new manage(); //the instance 
manage.information(); 

Там нет erros, однако, даже если я забочусь о CRE при попытке распечатать массив, когда я вызываю объект и помещаю его в массив, когда я вызываю manage.information(); он просто возвращает пустой [] список. Я не знаю, почему?

Heres класс, который должен называет это

public class themenu{ 
    public static void adminmenu(){ 

    boolean loop=true; 
    while(loop){ 


     System.out.print("1:List items \n"); 
     System.out.print("4:Add \n"); 
     System.out.print("6:Infos \n"); 
     System.out.print("7:Quit \n"); 
     System.out.print("Choice:"); 
     Scanner choiceuser = new Scanner(System.in); 
     String userchoix = choiceuser.nextLine(); 
     manage management = new manage(); 
     if(userchoice.equals("1")){ 
      manage.information(thegame); //here I get the error 
     } 


     else if(userchoice.equals("4")){ 

       manage.ajout_jeux(); 

       } 

спасибо

+0

Вы называете «информацию» без параметра? – user1071777

+0

Мой плохой, я вставил неправильный код, сделанный edit. И да, мне нужно иметь возможность вызывать информацию без параметров, так как мой arraylist не создается или не инициализируется, когда я вызываю его из другого класса. Он просто создается в управлении class –

+1

Почему вы создаете новые экземпляры 'Scanner' для каждого запроса ввода пользователя? Вам нужен только один экземпляр для всего класса. – Tom

ответ

0

Вам нужно позвонить manage.ajout_jeux перед тем manage.information();, а затем передать этот список на метод информации. Но учтите, что в настоящее время возвращаемый тип метода ajout_jeux равен List<Jeux>, в то время как вы возвращаетесь изнутри метода List<Game>. Поэтому вам также нужно исправить это. Метод вызов будет выглядеть следующим образом

manage management = new manage(); //the instance 
manage.information(yourListName); 
+0

«Но учтите, что в настоящее время возвращаемый тип метода ajout_jeux isList , когда вы возвращаетесь из метода List .Так что вам нужно исправить это также . "Я не понимаю, что вы mean.Im вполне начиная с Java –

+0

Изменить Публичный список ajout_jeux() общественный Список ajout_jeux() в коде – sol4me

+0

@Phil_oneil вы можете использовать некоторые Java IDE для кодирования – sol4me

0

вместо вызова типа объекта

manage management = new manage(); //the instance 
manage.information(); 

вы должны вызвать метод внутри объекта и передать массив к нему.

management.information(new ArrayList<Game>()); 
+0

Другое дело, если вы хотите напечатать элементы массивов, вы должны перебрать этот список и распечатать каждый элемент. – aurelius

Смежные вопросы