Java 将用户输入添加到不带nextLine的arraylist

Java 将用户输入添加到不带nextLine的arraylist,java,input,arraylist,Java,Input,Arraylist,我试图将用户输入添加到arraylist中,直到有人键入“退出”。问题在于扫描仪上的.nextLine()方法。它将跳过一行,因此最终的ArrayList将只包含每一个其他输入 以下是我到目前为止的情况: public class Question { static Scanner userInput = new Scanner(System.in); static List<String> strings = new ArrayList<String>(); pub

我试图将用户输入添加到arraylist中,直到有人键入“退出”。问题在于扫描仪上的.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);

}


}
公开课问题{
静态扫描仪用户输入=新扫描仪(System.in);
静态列表字符串=新的ArrayList();
公共静态void main(字符串[]args){
System.out.println(“请输入字符串:”);
而(!userInput.nextLine().equals(“quit”)){
String v=userInput.nextLine();
字符串。添加(v);
}
显示列表();
}
私有静态void displayList(){
System.out.println(字符串);
}
}
我尝试过使用userInput.toString()而不是nextLine(),但仍然不起作用。是否有办法使每个用户输入都添加到ArrayList中

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


(发生的另一件恼人的事情是,如果我键入奇数个字符串,我需要键入两次“quit”,它才能真正退出。

你需要在while循环中检查“v”,而不是调用nextLine。因此你必须

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


解决方法之一是:

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);
    }
}
import java.util.ArrayList;
导入java.util.List;
导入java.util.Scanner;
公开课问题{
静态扫描仪用户输入=新扫描仪(System.in);
静态列表字符串=新的ArrayList();
公共静态void main(字符串[]args){
System.out.println(“请输入字符串:”);
字符串v;
while(true){
v=userInput.next();
如果(v.equalsIgnoreCase(“退出”))
打破
其他的
字符串。添加(v);
}
显示列表();
}
私有静态void displayList(){
System.out.println(字符串);
}
}

问题在于,您调用userInput.nextLine()两次,一次在while的头中,一次在while的正文中。您需要使用:

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