【发布时间】:2014-07-31 11:07:54
【问题描述】:
我再次对代码中的某些内容感到困惑。我是初学者,但我仍然熟悉 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
提前谢谢你。 P.S:有没有更方便的方法来编写一个循环来从用户那里收集数据?
【问题讨论】:
-
请学会尊重 Java 命名约定。变量以小写字母开头。此外,您应该在每个案例中都休息一下,否则即使用户输入了 1,也会执行 case2。
-
对这种特定类型的用户输入使用递归并不是一个好主意。递归往往会为每个内部调用分配堆栈空间,一旦超过 JVM 的专用堆栈空间,就会收到堆栈溢出异常。在您的情况下,这几乎不会发生,因为您需要输入无数种成分。不过,这是一种不好的做法。
-
这我知道,我只是不关心“次要”细节......直到我在这里发布!哈哈!我道歉...
-
会记住的,Ivaylo。
标签: java