Java字符比较似乎不起作用 [英] Java char comparison does not seem to work

查看:59
本文介绍了Java字符比较似乎不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道您可以将Java中的字符与普通操作符进行比较,例如anysinglechar == y。但是,我对此特定代码有一个问题:

do{ 
    System.out.print("Would you like to do this again? Y/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.
");
}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。然后它被正确地打印出来(因此它将被看到两次)。然而,这种比较似乎并不成立。

我确信我忽略了一些明显的东西。

推荐答案

您的逻辑不正确。它总是true不是'Y'或它不是'y'或它不是.

您需要"and"的逻辑运算符:&&

if(looper != 'Y' && looper != 'y' && looper != 'N' && looper != 'n')

和您的while条件中的类似更改。

这篇关于Java字符比较似乎不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆