【问题标题】:Java char comparison does not seem to work [duplicate]Java char比较似乎不起作用[重复]
【发布时间】: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


【解决方案1】:

你的逻辑不正确。 looper 不是'Y' 总是true 它不是'y' 它不是...

你想要“和”的逻辑运算符:&&

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

以及您的while 条件的类似变化。

【讨论】:

  • 哦该死的。我知道这是显而易见的。抱歉这个愚蠢的问题。
【解决方案2】:

与其将逻辑运算符从||改成&&,不如让代码更清晰:

private static final Set<Character> YES_OR_NO = Set.of('Y', 'y', 'N', 'n');

do { 
    System.out.print("Would you like to do this again? Y/N\n");
    looper = inputter.getChar();
    System.out.print(looper);
    if (!YES_OR_NO.contains(looper))
        System.out.print("No valid input. Please try again.\n");
} while(!YES_OR_NO.contains(looper));

【讨论】:

    猜你喜欢
    • 2013-02-06
    • 2011-10-31
    • 1970-01-01
    • 2022-12-02
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 2013-06-19
    相关资源
    最近更新 更多