我不能在一个数组中存储多个值

时间:2019-01-16 12:31:11

标签: java

我正在尝试创建一个程序,您可以在其中输入订单,它会记住您的订单,并在出现提示时显示出来。问题是,我似乎无法为历史记录存储多个输入

Scanner sc = new Scanner(System.in);
    boolean a = true;
    int count = 0;
    String [] hist = new String [count+1];
for (int i = 0; a == true; i++)
    {
    //declaration
    String [] menu = {"1. Coke", "2. Sprite", "3. Lemonade", "4. History"};     
     //this should be outside of the loop i think

    //displays the menu
    for (int j = 0; j < 4; j++) {
        System.out.println(menu[j]);
    }

    //takes order
    System.out.println();
    int choice = sc.nextInt();

    //stores history
    if(choice != 4) 
    {
    hist[i] = menu[choice - 1];
    }

    //prints history
    else
    {
        for (int l = 0; l < hist.length; l++)
        {
            System.out.println("You have orderd; " + hist[l]);
        }
    }

    System.out.println("Would you like to try again?");
    a = sc.nextBoolean();
    count++;
    }

1 个答案:

答案 0 :(得分:1)

正如我所见,您的问题是简单数组的大小没有可变性,一旦将它们设置为一定长度,就无法输入新值。

例如:如果您的数组长度为4,则无法在索引4或更高的位置存储任何内容。

解决此问题的首选方法是使用ArrayLists。

但是您每次也可以创建一个新的数组:

//stores history
if(choice != 4){
    String temp = new String[hist.length];
    for(int x = 0; x < hist.length; x++){
        temp[x] = hist[x];
    }
    temp[hist.length] = menu[choice - 1];
    hist = temp;
}

您也应该做到     如果(选择<4){... 因为那会检查选择是否小于4,而不是是否不是4。