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的形式不同。对于第一个问题,请检查答案。