2017-02-22 12 views
0

まず、どのくらい大きいかによって、リストのpopotnikに新しいPopotnikを追加します。これは機能が正常に機能しています。それから私はリストpopotnikを通過し、それがどこにあるかに応じてpopotnikの値を設定したいが、私の値は呼び出されるたびに常に0になる。また、私はその時に1つのポポトニクを設定したいので、そこに休憩しています。そこに何らかの休憩を取っている間、私はどのように増分すべきですか?Java配列 - リストを通って特定の値を設定する方法

またif(popotnik.get(i) == null){}が呼ばれますが、popotnik内部値(s)がnullであるされていない

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; 
} 

メインクラス:リスト上のオブジェクトがnullではないため

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)は真なることはありません。プロラミスタのforループで初期化します。 Popotnikクラスの中にいくつかのフィールドがある場合、それらはnullですが、オブジェクト自体はありません。

popotnik.get(i).getName() == nullのようにする必要があります。

さらに、popotnikの名前の最後に数字を追加したい場合は、空のオブジェクトでリストを初期化する必要はありません。 別のコンストラクタを使用してリストにオブジェクトを追加するだけで済みます。 たとえば、popotnik.add(new Popotnik("Popotnik"+(popotnik.size()+1)))。 これはあまりよくありませんが、ここのような初期化は必要ないと思います。

関連する問題