在没有nextLine的情况下将用户输入添加到arraylist

时间:2015-02-11 05:24:13

标签: java input arraylist

我正在尝试将用户输入添加到arraylist中,直到某人键入“quit”。问题是扫描仪上的.nextLine()方法。它将跳过一行,因此最终的ArrayList将只包含所有其他输入。

这是我到目前为止所做的:

public class Question {

static Scanner userInput = new Scanner(System.in);
static List<String> strings = new ArrayList<String>();

public static void main (String[] args) {

    System.out.println("Please enter your strings:");

    while(!userInput.nextLine().equals("quit")) {

        String v = userInput.nextLine();
        strings.add(v);


        }

    displayList();


}

private static void displayList() {
    System.out.println(strings);

}


}

我尝试过使用userInput.toString()而不是nextLine(),但它仍然无效。有没有办法让它每个用户输入被添加到ArrayList?

EG。如果我输入一个二三四退出,显示的列表将是[二,四]。

(另一件令人讨厌的事情是,如果我键入奇数个字符串,我需要两次输入“quit”才能实际退出。

3 个答案:

答案 0 :(得分:1)

解决问题的一种方法:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Question {

    static Scanner userInput = new Scanner(System.in);
    static List<String> strings = new ArrayList<String>();

    public static void main (String[] args) {
        System.out.println("Please enter your strings:");
        String v;
        while (true){
            v = userInput.next();
            if(v.equalsIgnoreCase("quit"))
                break;
            else
                strings.add(v);
        }
        displayList();
    }
    private static void displayList() {
        System.out.println(strings);
    }
}

答案 1 :(得分:0)

您需要检查&#39; v&#39;在while循环中而不是调用nextLine。所以你会有

String v;
do{
 v = userInput.nextLine();
 if(v.equals("quit"))
   break;
 else
   strings.add(v);
} while(true);

String v = userInput.nextLine();
while(!v.equals("quit"))
{
 strings.add(v);
 v = userInput.nextLine();
}

答案 2 :(得分:0)

问题是你正在调用userInput.nextLine()两次,一次在while的标题中,一次在while的主体中。你需要使用:

String line = "";
while(!line.equals("quit")) {
    line = userInput.nextLine();
    strings.add(line);
}