【发布时间】:2022-01-30 09:41:20
【问题描述】:
我知道您可以将 Java 中的字符与普通运算符进行比较,例如 anysinglechar == y。但是,我对此特定代码有疑问:
do{
System.out.print("Would you like to do this again? Y/N\n");
looper = inputter.getChar();
System.out.print(looper);
if(looper != 'Y' || looper != 'y' || looper != 'N' || looper != 'n')
System.out.print("No valid input. Please try again.\n");
}while(looper != 'Y' || looper != 'y' || looper != 'N' || looper != 'n');
问题不应该是其他方法,inputter.getChar(),但无论如何我都会转储它:
private static BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
public static char getChar() throws IOException{
int buf= read.read();
char chr = (char) buf;
while(!Character.isLetter(chr)){
buf= read.read();
chr = (char) buf;
}
return chr;
}
我得到的输出如下:
Would you like to do this again? Y/N
N
NNo valid input. Please try again.
Would you like to do this again? Y/N
n
nNo valid input. Please try again.
Would you like to do this again? Y/N
如您所见,我输入的字符是n。然后它被正确打印出来(因此它会被看到两次)。但是,这种比较似乎并不成立。
我确定我忽略了一些明显的东西。
【问题讨论】:
-
你试过 if (a.equals(b)) 吗?
-
@CássioGalvão
(a.equals(b))如果它的字符串可以正常工作。但对于字符==使用。 -
感谢@Leigh 的清理工作。
标签: java comparison char conditional-statements