我正在尝试创建一个程序,您可以在其中输入订单,它会记住您的订单,并在出现提示时显示出来。问题是,我似乎无法为历史记录存储多个输入
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++;
}
答案 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。