Java:nextLine()跳过输入并向arrayList

时间:2016-01-08 15:57:44

标签: java arraylist java.util.scanner

我有这段代码应该通过Scanner的next()或nextLine()方法将String值添加到arrayList。 next()的问题是它忽略了第一个空格后的所有内容,所以我得到了我应该使用nextLine()方法。 nextLine()的问题在于它不记录输入,而是将几个空格存储到arrayList中。这是代码:

System.out.println("\nWhat is your idea? ");                  
String i = in.nextLine();                               
in.nextLine();
meals.add(i);    
System.out.println("\n" + i + " has been entered into the idea pool. \n");
System.in.read();

我在最初的“String i = in.nextLine()”之后添加了额外的“in.nextLine()”,因为这是我在研究这个问题时找到的唯一修复,但它对我不起作用,它只是仍然只是存储几个空格。此外,最后的System.in.read();只有那里,所以它不会只是在输入后跳转。

以下示例适用于以下代码:

ArrayList<String> meals = new ArrayList<String>();
String select = "";
while(!select.equals("")){
    System.out.println("What would you like to do?");
    System.out.println("1. <Irrelevant>");
    System.out.println("2. Enter an idea");
    System.out.println("3. <Irrelevant>");
    System.out.println("4. <Irrelevant>");
    System.out.println("Q. <Irrelevant>");

    select = in.next();

    switch(select){
        case "1":
            //Some stuff here.
        case "2":
            //Here's where the above problem fits into.
        case "3":
            //More stuff here
        //and so on...    
    }
}

1 个答案:

答案 0 :(得分:0)

您遇到此类问题的原因是因为您首先使用next()方法来读取输入,以及使用nextLine()进行的其他输入。

next()接受输入,输入指针与当前输入保持在同一行。

因此,只要您输入您的选择并按Enter键,选项就会保存到select变量中,但输入指针仍然在同一行。您应该使用nextLine()将指针移动到新行。

然后你应该使用任意数量的nextLine()来接收多行。

此外,从case 2语句中删除一个额外的nextLine()方法调用。删除System.in.read(),因为你的问题已经解决了。

ArrayList<String> meals = new ArrayList<String>();
String select = "";
while(!select.equals("")){
System.out.println("What would you like to do?");
System.out.println("1. <Irrelevant>");
System.out.println("2. Enter an idea");
System.out.println("3. <Irrelevant>");
System.out.println("4. <Irrelevant>");
System.out.println("Q. <Irrelevant>");

select = in.next();
in.nextLine();   // add this extra line in your code
switch(select){
    case "1":
        //Some stuff here.
    case "2":
        System.out.println("\nWhat is your idea? ");                  
        String i = in.nextLine();                               
        meals.add(i);    
        System.out.println("\n" + i + " has been entered into the idea pool. \n");
    case "3":
        //More stuff here
    //and so on...    
}