我正在尝试从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);
}
}
但它进入无限循环并且从不打印列表。 有人可以帮我指出我的代码中的错误吗?
答案 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);
}
}