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

时间:2016-11-08 05:23:39

标签: java command-line-arguments system.in

我正在尝试从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);
   }
}

但它进入无限循环并且从不打印列表。 有人可以帮我指出我的代码中的错误吗?

2 个答案:

答案 0 :(得分:0)

您的代码没有任何问题。它并没有因为没有得到正确的信号而终止#34;爱好。

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

Ctrl+Z for windows命令行。

如果您使用的是Java 8.版本较短

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);
    }
}

答案 1 :(得分:0)

检查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);
    }
}