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

时间:2011-10-03 04:23:39

标签: 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");    
    }

2 个答案:

答案 0 :(得分:4)

readLine()返回null时,循环将终止。发生这种情况的唯一方法是将标准输入关闭。用户可以通过键入 Ctrl + D 来完成此操作,但这对于典型用户来说可能太多了。一个简单的选择是要求他们在完成后键入“完成”;然后你的循环应检查该值,而不是null

答案 1 :(得分:2)