ArrayList不允许扫描仪输入

时间:2014-07-31 11:07:55

标签: java

在我的代码中,我对某些事情感到困惑。我是初学者,但我仍熟悉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:有没有更方便的方法来编写循环来从用户收集数据?

1 个答案:

答案 0 :(得分:2)

每次调用都会创建一个新的ArrayList。你需要使用相同的收集每个递归调用的结果。

这是一个更简单的版本:

ArrayList<> ingredients = ...
while (true) {
  //primpt for ingrediant, add to list
  if (endOfInput()) { //this is where you prompt for 1/2
     break;
  }
}