2017-02-22 75 views
0

首先,我在列表popotnik中添加新的Popotnik,具体取决于它的大小,它工作正常 - 函数prostaMesta。然后,我想通过列表popotnik并设置popotnik值取决于它在哪里,但是每当它被调用时,我的值总是0。此外,我有休息,因为我只想在当时设置一个popotnik。我应该如何增加(i)在那里休息一下?Java数组 - 如何通过列表并设置具体的值

而且if(popotnik.get(i) == null){}不会被调用,但里面popotnik值都是空的(S)

private List<Popotnik> popotnik = new ArrayList<Popotnik>(); 

public void prostaMesta(List<Popotnik> popotnik, int sedez){ 
      stanovanje.setPostle(sedez); 
      for(int i=0; i<stanovanje.getPostle(); i++){ 
       popotnik.add(new Popotnik()); 
      } 
      System.out.println(popotnik); 
     } 

public void dodajPotnika(List<Popotnik> popotnik, Popotnik popotnik2){ 
    for(int i=0; i<popotnik.size(); i++){ 
     if(popotnik.get(i) == null){ 
      setPopotnik(popotnik, i); 
      popotnik.set(i, popotnik2); 
      break; 
     } 
    } 
    System.out.println(getPopotnik()); 
} 

public void setPopotnik(List<Popotnik> popotnik, int i){ 
    this.popotnik = popotnik; 
} 


public List<Popotnik> getPopotnik(){ 
    return popotnik; 
} 

主要类:

List<Popotnik> alPopotnik = new ArrayList<Popotnik>(); 

    if(x.equals("p")){ //inside of a loop when prostaMesta() is being called 
     potovanje.prostaMesta(alPopotnik, sedez); 
    } 

    `if(x.equals("d")){` //inside of a loop when dodajPotnika() is being called 
      System.out.println("Vnesi ime: "); 
      String ime = skener.next(); 
      Popotnik popotnik = new Popotnik(ime); 
      potovanje.dodajPotnika(alPopotnik, popotnik); 
    } 
+1

'setPopotnik(popotnik,i);'后面的代码是什么?因为如果我们没有它,我们将无法帮助你。我想指出修改一个输入值,而不是返回它对于那些和你一起工作的人来说确实是模棱两可的。 – DamCx

回答

0

if(popotnik.get(i) == null)是不正确的,因为名单上的对象不为空。您在prostaMesta的for循环中初始化它们。 如果你在Popotnik类中有一些字段,那么它们是空的,但是对象本身不是。

您需要执行类似popotnik.get(i).getName() == null的操作。

此外,如果您只想在popotnik的名称末尾添加一个数字,则不需要用空对象初始化列表。 您可以使用不同的构造函数将对象添加到列表中。 例如popotnik.add(new Popotnik("Popotnik"+(popotnik.size()+1)))。 这不是很好,但我认为这样的初始化并不是必需的。

相关问题