【问题标题】:BufferedReader readLine() - Exit when a specific string is enteredBufferedReader readLine() - 输入特定字符串时退出
【发布时间】:2012-09-22 22:31:52
【问题描述】:

作为标题,我希望它在我输入特定关键字时退出循环。

try {
    buf = br.readLine();
    while (buf != "doh") {
        buf = br.readLine();
    }
}

两个问题:

  1. 当我从命令提示符输入doh 时,它不会退出循环。

  2. 如果我输入"buf != null",它只有在我按下 Ctrl+Z 时才有效。如果我什么都不输入(只需按回车键)它不会退出循环。

【问题讨论】:

  • 第二点是因为按回车键会给你“\n”,但是由于readLine方法删除了最后的“\n”,你只得到“”(一个空字符串),这是不同的形式为空。对于第一个,只需检查答案即可。

标签: java bufferedreader


【解决方案1】:

变化:

buf != "doh"

到:

!buf.equals("doh")

并阅读:Java String.equals versus ==

【讨论】:

    【解决方案2】:

    您不应将字符串(和一般对象)与 == 进行比较,后者仅用于原语(intcharboolean 等)。对于对象,您使用@987654321@ 方法。

    try {
        buf = br.readLine();
        while (! buf.equals("doh")) {
            buf = br.readLine();
        }
    }
    

    【讨论】:

      【解决方案3】:

      使用equals 方法而不是!=。运算符 != 仅当对对象的引用不相同时才会返回 true。方法equal 将逐个字符地比较字符串。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-09
        • 2016-01-08
        相关资源
        最近更新 更多