在 Java 中从命令行读取字符串列表

Reading a list of strings from command line in Java

我正在尝试从 Java 中的命令行读取字符串列表,然后打印这些字符串。 这是代码:-

public class Example {
  public static void main(String args[] ) throws Exception {
    List<String> list = new ArrayList<String>();
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String line = null;
    while((line = br.readLine()) != null) {
      list.add(line);
    }
    System.out.println(list);
   }
}

但是它进入了一个无限循环并且永远不会打印列表。 谁能帮我指出我代码中的错误?

您的代码没有任何问题。它不会终止只是因为它还没有得到正确的"signal"。

完成输入后尝试Ctrl+D。它应该适用于大多数情况。

Ctrl+Z 用于 windows 命令行。

如果你用的是Java8.还有一个更短的版本

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;
import java.util.stream.Collectors;

public class ReadLinesFromStdin {

    public static void main(String [] args) throws IOException {
        List<String> lines = new BufferedReader(new InputStreamReader(System.in))
                .lines().collect(Collectors.toList());
        System.out.println(lines);
    }
}

检查 while 循环内的终止条件将解决您的问题。

public class Example {
    public static void main(String args[] ) throws Exception {
        List<String> list = new ArrayList<String>();
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line;
        while(true) {
            line = br.readLine();
            if (line == null || line.isEmpty()) {
                break;
            }
            list.add(line);
        }
        System.out.println(list);
    }
}