我正在使用 bufferedReader 从用户读取 System.in,用户将输入由空格分隔的域地址和源地址。
eg
auckland.ac.nz. 198.19.20.44
www.esc.auckland.ac. 173.27.28.93
stat.auckland.ac.nz. 52.159.152.105
student.auckland.ac.nz. 64.247.240.232
现在的问题是,一旦用户完成输入数据,输入流不会终止,因此程序不会执行。我已经为 BufferedReader 编写了一些代码,如果有人愿意检查它并告诉我哪里出错了,我将不胜感激。请注意两个变量“count”和“n”,无论如何我可以使用它们来帮助解决这个问题吗?
try {
String fqdn, src, key, temp;
Integer count;
int n = 0;
while ((temp = br.readLine()) != null){
int divide = temp.indexOf(" ");
fqdn = temp.substring(0, divide); // divide the input
src = temp.substring(divide+1);
key = fqdn + " " + src;
//System.out.printf("%d: %s\n", n, key);
dht.lookup(key);
n += 1;
}
br.close();
} catch (NoSuchElementException e) {
//System.out.printf("end-of-file\n");
}
最佳答案
当 readLine()
返回 null
时,循环将终止。发生这种情况的唯一方法是关闭标准输入。用户可以通过键入 Ctrl+D 来完成此操作,但这对一般用户来说可能要求太高了。一种简单的替代方法是让他们在完成后输入“完成”;那么您的循环应该检查该值,而不是 null
。
关于java - 如何告诉 BufferedReader 停止从 System.in 读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7631003/