如何在 Java 中进行多行输入
How to take multi-line input in Java
我正在尝试在 Java 中获取多行用户输入并将这些行拆分为一个 array
,我需要这个来为在线裁判解决一个问题。我正在使用 Scanner
来获取输入。我无法确定输入结束。我总是得到一个无限循环,因为我不知道输入的大小(即行数)
用空字符串终止输入(点击回车)仍然是一个无限循环。下面提供了代码。
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()
第一次应该是假的,因为还没有输入。任何帮助或澄清表示赞赏。
您可以使用如下所示的内容结束循环。这里,字符串 "END" (case-insenstive) 用于表示 multi-line 内容的结束:
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;
}
}
}
您可以将空行用作 loop-breaker:
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);
[...]
}
您可以使用此代码。它 returns 当用户在空行上按 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
}
我正在尝试在 Java 中获取多行用户输入并将这些行拆分为一个 array
,我需要这个来为在线裁判解决一个问题。我正在使用 Scanner
来获取输入。我无法确定输入结束。我总是得到一个无限循环,因为我不知道输入的大小(即行数)
用空字符串终止输入(点击回车)仍然是一个无限循环。下面提供了代码。
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()
第一次应该是假的,因为还没有输入。任何帮助或澄清表示赞赏。
您可以使用如下所示的内容结束循环。这里,字符串 "END" (case-insenstive) 用于表示 multi-line 内容的结束:
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;
}
}
}
您可以将空行用作 loop-breaker:
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);
[...]
}
您可以使用此代码。它 returns 当用户在空行上按 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
}