【问题标题】:Comparing char variables in java比较java中的char变量
【发布时间】:2016-06-30 22:57:14
【问题描述】:

我会比较一个字符,但它实际上不起作用:

//...
System.out.print("PROCEED? (Y/N):\t");
line = in.nextLine();
ch = line.charAt(0);

while (ch != 'y' || ch != 'n' || ch != 'Y' || ch != 'N'){
    System.out.print("NON-VALID INPUT. TYPE Y-N:\t");

    line = in.nextLine();
    ch = line.charAt(0);
}
//...

在我的终端上,当我按下yn 时,结果是:

PROCEED? (Y/N): y
NON-VALID INPUT. TYPE Y-N:  y
NON-VALID INPUT. TYPE Y-N:  Y
NON-VALID INPUT. TYPE Y-N:  n
NON-VALID INPUT. TYPE Y-N:  r
NON-VALID INPUT. TYPE Y-N:  d
...

【问题讨论】:

  • ch != 'y' || ch != 'n'总是为真,因为如果ch == 'y' 那么ch != 'n';如果ch == 'n' 那么ch != 'y';如果ch != 'y'ch != 'n' 也是如此。

标签: java while-loop char comparison


【解决方案1】:

条件错误。您必须输入“和”条件 (&&),仅当用户键入除 ('Y'、'y'、'N'、'n') 之外的任何一个时才输入该条件。 代码如下:

    System.out.print("PROCEED? (Y/N):\t");
    Scanner in = new Scanner(System.in);
    String line=in.nextLine();
    Character ch=line.charAt(0);

    while(ch!='y' && ch!='n' && ch!='Y' && ch!='N'){
        System.out.print("NON-VALID INPUT. TYPE Y-N:\t");

        line=in.nextLine();
        ch=line.charAt(0);
    }

希望对你有帮助。

【讨论】:

    【解决方案2】:

    您需要在 while 循环中使用 && 而不是 ||

    【讨论】:

      【解决方案3】:

      你的情况不对。应该是:

      while(ch!='y' && ch!='n' && ch!='Y' && ch!='N')
      

      因为只要输入字符不同于所有 4 个可接受的输入,循环就会继续。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-21
        • 2017-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多