2016-07-21 10 views
-1

私のコードでは、私の情報を配列に格納するためにInventoryというクラスを作成しました。文字列を追加するメソッドと、配列に格納されているすべての情報を表示するメソッドを作成しました。コードが実行される途中で何か問題が発生しましたが、配列に格納されている情報は表示されません。空のコマンドウィンドウです。ここに男のクラスがあります。呼び出されても配列は表示されませんか?

public class Game { 

    public static void main(String[] args) { 
     Inventory playersInventory = new Inventory(); 
     playersInventory.addInventory("Knife"); 
     playersInventory.addInventory("Food"); 
     playersInventory.addInventory("Water"); 

     playersInventory.displayInventory(); 
    } 
} 

、ここでは、インベントリクラスは

ある
public class Inventory { 

    private String[] inventoryItem = new String[10]; 

    public void addInventory(String item){ 

     int x = 0; 
     while (true) { 
      if (inventoryItem[x]== null){ 
       item = inventoryItem[x]; 
       break; 
      } 
      else { 
       x++; 
      } 
     } 
    } 

    public void displayInventory(){ 
     int x = 0; 
     while (true){ 
      if (inventoryItem[x] == null){ 
       break; 
      } 
      else{ 
       System.out.println(inventoryItem[x] + "\n"); 
       x++; 
      } 
     } 
    } 
} 
+0

質問のタイトルから、配列が表示されるかどうかわかりません。どうすればわかるのですか? – xenteros

+2

'item = inventoryItem [x];の代わりに' inventoryItem [x] = item; 'を使いたいと思います。そして、おそらく、コンパイラがそのようなエラーを(パラメータに代入して)不平を言うようにするために、 'item'パラメータを最終的にしたいでしょう。 – Thomas

+1

なぜArrayListを使用しないのですか? – krzydyn

答えて

1

移入するために、以下に変更してコードを:

item = inventoryItem[x]; 

=が右側に式を評価し、上の結果を変数に代入するに左。だからあなたがしているのはinventoryItem[x]itemに割り当てることです。

つまり、配列に変更を加えるのではなく、パラメータに新しい値を割り当てます。これは実質的に何も行いません。

私はあなたが配列にパラメータを追加すると思います。だからあなたの代入文は、他の方法で回避する必要があります:実際に

inventoryItem[x] = item; 

、混乱を避けるために、ちょうどArrayListを使用します!

public class Inventory { 

    private ArrayList<String> inventoryItem = new ArrayList<>(); 

    public void addInventory(String item){ 
     inventoryItem.add(item); 
    } 

    public void displayInventory(){ 
     for (Sting item: inventoryItem) { 
      if (item != null) { 
       System.out.println(item + "\n"); 
      } 
     } 
    } 
} 

それほどクリーナーではありませんか?

+0

このような単純な間違いがありました。 ArrayListsに関する追加情報をありがとうと、私は今までそれらを認識していませんでした。再度、感謝します! –

0

コード

item = inventoryItem[x]; 

のあなたのラインは

inventoryItem[x] = item; 

する必要がありますあなたはからinventoryItem[x];を割り当てます210あなたは逆が必要です。

0

アイテムを配列 "inventoryItem"に入れなかったため、情報は表示されませんでした。

配列の問題は、この行にある

 if (inventoryItem[x]== null){ 
      inventoryItem[x]=item ; 
      break; 
     } 
+0

「試してみる」ことを要求しないでください。決定的な解決策を教えてください。それ以外の場合は答えません。 – activatedgeek

+0

これは質問に対する答えを提供しません。批評をしたり、著者の説明を求めるには、投稿の下にコメントを残してください。 - [レビューの投稿](レビュー/低品質の投稿/ 13077060) – activatedgeek

+0

@activatedgeekのご提案ありがとうございました:) –

0

割当値inventoryItem [x] = item;

関連する問題