我正在尝试使用Java中的多行用户输入并将行分成array
,我需要这样做来解决在线法官的问题。我正在使用Scanner
进行输入。我无法确定输入的结尾。我总是遇到一个无限循环,因为我不知道输入的大小(即行数)
使用空字符串终止输入(单击Enter)仍然是无限循环。下面提供的代码。
public static void main(String[] args) {
ArrayList<String> in = new ArrayList<String>();
Scanner s = new Scanner(System.in);
while (s.hasNextLine() == true){
in.add(s.nextLine());
//infinite loop
}
}
我什至不知道为什么循环第一次执行。我相信hasNextLine()
第一次应该是假的,因为还没有输入。任何帮助或澄清表示赞赏。
答案 0 :(得分:3)
您可以使用空行作为循环中断器:
while (s.hasNextLine()){ //no need for "== true"
String read = s.nextLine();
if(read == null || read.isEmpty()){ //if the line is empty
break; //exit the loop
}
in.add(read);
[...]
}
答案 1 :(得分:1)
您可以使用以下类似内容结束循环。此处,字符串“ END”(不区分大小写)用于表示多行内容的结尾:
public static void main(String[] args) {
ArrayList<String> in = new ArrayList<String>();
Scanner s = new Scanner(System.in);
while (s.hasNextLine()) {
String line = s.nextLine();
in.add(line);
if (line != null && line.equalsIgnoreCase("END")) {
System.out.println("Output list : " + in);
break;
}
}
}
答案 2 :(得分:1)
您可以使用此代码。当用户在空白行上按Enter
时返回。
import java.util.Scanner;
import java.util.ArrayList;
public class Main {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
ArrayList<String> arrayLines = new ArrayList<>();
String line;
while(true){
line = scanner.nextLine();
if(line.equals("")){
break;
}
else {
System.out.println(line);
arrayLines.add(line);
}
}
System.out.println(arrayLines);
}
}
最佳
答案 3 :(得分:1)
您可以执行以下操作:
while (s.hasNextLine() == true){
String line = s.nextLine();
if ("".equals(line)) {
break;
}
in.add(line);
//infinite loop
}