再次,我对代码感到困惑。我是一个初学者,但我仍然熟悉Scanner类。但是,对于通用数组,它会绕过字符串的用户输入。我想了解为什么未“收集” ArrayList:
public static void addingIngredients(){
ArrayList<String> Ingredients = new ArrayList<String>();
String addedIngredient = input.nextLine();
Ingredients.add(addedIngredient);
System.out.println(Ingredients +": Continue?" );
System.out.println("1 (Yes) / 2 (No)");
int choice = input.nextInt();
switch (choice){
case 1:
addingIngredients();
case 2:
System.out.println("Test");
}
}
字符串“ addedIngredient”被跳过;这是我通过控制台收到的内容:
Now Loading...
What Ingredients are in this protein powder?
Begin Add?
1 (Yes) / 2 (No)
1
[]: Continue?
1 (Yes) / 2 (No)
1
[]: Continue?
1 (Yes) / 2 (No)
2
Test
先感谢您。附注:是否有更方便的方法编写循环以从用户收集数据?
最佳答案
您每次调用都会创建一个新的ArrayList。您需要使用相同的方法来收集每个递归调用的结果。
这是一个更简单的版本,您可以从以下版本开始:
ArrayList<> ingredients = ...
while (true) {
//primpt for ingrediant, add to list
if (endOfInput()) { //this is where you prompt for 1/2
break;
}
}