繁体   English   中英

如何在Java中进行多行输入

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM