Java中如何进行多行输入

Zah*_*am2 1 java multiline java.util.scanner

我正在尝试在 Java 中获取多行用户输入并将这些行拆分为一个array,我需要它来解决在线法官的问题。我正在使用 aScanner来接受输入。我无法确定输入的结尾。我总是遇到无限循环,因为我不知道输入的大小(即行数)

用空字符串终止输入(单击 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
        }
    }
Run Code Online (Sandbox Code Playgroud)

我什至不确定为什么循环第一次执行。我相信hasNextLine()第一次应该是假的,因为还没有输入任何内容。任何帮助或澄清表示赞赏。

小智 5

您可以使用空行作为循环中断器:

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);
    [...]
}
Run Code Online (Sandbox Code Playgroud)