调用后数组不显示?

时间:2016-07-21 08:38:55

标签: java arrays oop

在我的代码中,我创建了一个名为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++;
            }
        }
    }
}

4 个答案:

答案 0 :(得分: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");
            }
        }
    }
}

不是那么干净吗?

答案 1 :(得分:0)

您的代码行

  item = inventoryItem[x];

应该是

  inventoryItem[x] = item;

您正在将inventoryItem[x];分配给item,因为您需要反向。

答案 2 :(得分:0)

您没有将项目放在数组“inventoryItem”中,因此没有显示任何信息。

将代码更改为以下以填充数组

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

答案 3 :(得分:0)

指定值inventoryItem [x] = item;