我正在尝试将用户输入添加到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”才能实际退出。
答案 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);
}