Java BufferedReader readLine()-输入特定字符串时退出

Java BufferedReader readLine()-输入特定字符串时退出,java,bufferedreader,Java,Bufferedreader,作为标题,我希望它在输入特定关键字时退出循环 try { buf = br.readLine(); while (buf != "doh") { buf = br.readLine(); } } 两个问题: 当我在命令提示符下输入doh时,它不会退出循环 如果我输入“buf!=null”则仅当我按Ctrl+Z时才有效。如果我不输入任何内容(只需按enter键),则不会退出循环 更改: buf != "doh" 致: 并阅读:。更改: buf != "d

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

try {
    buf = br.readLine();
    while (buf != "doh") {
        buf = br.readLine();
    }
}
两个问题:

  • 当我在命令提示符下输入
    doh
    时,它不会退出循环

  • 如果我输入
    “buf!=null”
    则仅当我按Ctrl+Z时才有效。如果我不输入任何内容(只需按enter键),则不会退出循环

  • 更改:

    buf != "doh"
    
    致:

    并阅读:。

    更改:

    buf != "doh"
    
    致:


    阅读:。

    使用
    等于
    方法,而不是
    =。操作员
    =才会返回true。方法
    equal
    将逐字符比较字符串。

    使用
    equals
    方法而不是
    =。操作员
    =才会返回true。方法
    equal
    将逐字符比较字符串。

    您不应该将字符串(以及一般的对象)与
    =
    进行比较,后者仅用于原语(
    int
    char
    布尔
    等)。对于对象,可以使用
    方法

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

    您不应该将字符串(以及一般的对象)与仅用于原语(
    int
    char
    boolean
    等)的
    =
    进行比较。对于对象,可以使用
    方法

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

    第二点是因为按just enter键会给您“\n”,但由于readLine方法删除了结尾处的“\n”,您只会得到“”(一个空字符串),这与null的形式不同。对于第一个方法,只需检查答案。第二点是因为按just enter键会给您“\n”,但由于readLine方法删除了结尾处的“\n”,因此只会得到“”(一个空字符串),这与null的形式不同。对于第一个问题,请检查答案。