【问题标题】:data validation using char != not working [duplicate]使用char的数据验证!=不起作用[重复]
【发布时间】:2022-01-30 09:43:21
【问题描述】:

您好,我知道这是非常基本的,但我在比较 char 和 != 时遇到了麻烦。每当我输入其他字母(不是 y 和 n)时,代码仍然循环。

我尝试将 != 更改为 ==,但当我按 Y 时,它会跳出循环。

这是怎么回事?谢谢!

public static void main(String[] args) {
    char inputChar;
    Scanner input = new Scanner(System.in);

    do {
        System.out.println("-----------------------------------------------");
        System.out.println("Try Again(Y/N)? ");
        do {
            inputChar = input.next().toUpperCase().charAt(0);
            System.out.println("Loop");
        } while (inputChar != 'Y' || inputChar != 'N');
        System.out.println(inputChar + " d");
    } while (inputChar == 'Y');
    System.out.println("Thank you and Good bye!");
}

【问题讨论】:

  • inputChar != 'Y' || inputChar != 'N' 这始终是正确的,因此您永远不会退出该循环。请改用&&
  • duplink 是同样的 logical 错误的一个示例......与您的代码几乎相同。
  • @stephen 用于书签目的stackoverflow.com/questions/26337003/…
  • @SotiriosDelimanolis - 谢谢。是的,这对双方来说都是一个更好的双向链接。

标签: java


【解决方案1】:
while (inputChar != 'Y' || inputChar != 'N');

你写的条件是'在输入不是 Y 或不是 N 时循环'。

没有字符同时等于 Y 和等于 N,所以这将永远循环。

如果是Y,那么就不是N,所以第二部分为真。

如果是N,那么就不是Y,所以第一部分为真。

如果是 Z,那么两个部分都为真。

你想要

while (inputChar != 'Y' && inputChar != 'N');

【讨论】:

  • 哦,谢谢,我没注意到
【解决方案2】:

问题在于这一行:} while (inputChar != 'Y' || inputChar != 'N');

由于您使用的是逻辑或运算,循环继续,而inputChar 不等于YinputChar 不等于N。问题是其中一个总是正确的,所以你的循环永远运行,因为一个字符不能同时等于'N'和'Y'。尝试使用逻辑和 (&&)。

【讨论】:

    猜你喜欢
    • 2015-06-08
    • 2013-05-17
    • 1970-01-01
    • 2014-07-01
    • 2015-06-03
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多