繁体   English   中英

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

[英]How to tell BufferedReader to stop reading from System.in?

我使用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

我将看到的是Observer Pattern http://en.wikipedia.org/wiki/Observer_pattern和多线程相关的东西,如wait() - 使用此链接: 如何根据Java中的URLConnection对BufferedReader设置超时?

并看看这里: http//www.javaspecialists.eu/archive/Issue153.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM