java - 如何告诉 BufferedReader 停止从 System.in 读取?

标签 java io java.util.scanner bufferedreader

我正在使用 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/

相关文章:

java - Executor在main中运行后如何完成我的程序

java - HTML : Form does not send UTF-8 format inputs

shell - 使用 Haskell 输入数据

java - 使用扫描仪超出时间限制 - Java

java - 在一行中获取多个输入,直到用户按下回车

java - Spring OAuth2 刷新 token 在刷新访问 token 后更改

java - 在美国计算机上运行 JAR 文件时出现问题

java - 扫描仪在使用 next() 或 nextFoo() 后跳过 nextLine()?

java - listFiles(FileFilter) 而不是 listFiles(FileNameFilter)

java - 从文本文件中搜索特定文本