[英]How to take multi-line input in Java
我试图使用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()
第一次应该是假的,因为还没有输入。 任何帮助或澄清表示赞赏。
您可以将空行用作循环中断器:
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);
[...]
}
您可以使用以下类似内容结束循环。 此处,字符串“ 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;
}
}
}
您可以使用此代码。 当用户在空行上按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);
}
}
最好
您可以执行以下操作:
while (s.hasNextLine() == true){
String line = s.nextLine();
if ("".equals(line)) {
break;
}
in.add(line);
//infinite loop
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.