验证输入的char变量。 Do-while循环不会中断

时间:2017-08-10 06:55:56

标签: java validation char java.util.scanner do-while

我有一种检查用户是否是学生的方法,但我无法验证条件。

char custStud = '0';
Scanner input = new Scanner(System.in);

do{
       System.out.println("Are you a student? (Type Y or N): ");
       custStud = input.next().charAt(0);
       custStud = Character.toLowerCase(custStud);
  }
  while (custStud != 'y' || custStud != 'n');

当我启动这个程序时,它不会打破循环,即使是' y'或者' n'进入。我怀疑custStud可能在更改为小写时意外更改了类型,但我不确定。 如何使这个循环正常工作?

2 个答案:

答案 0 :(得分:4)

while (custStud != 'y' || custStud != 'n')始终为真,因为custStud不能同等于' y'和' n'。

您应该将条件更改为:

while (custStud != 'y' && custStud != 'n')

答案 1 :(得分:1)

你错了:

 while (custStud != 'y' || custStud != 'n');// wrong 
 while (custStud != 'y' && custStud != 'n');// correct

尝试运行此代码:

        char custStud = '0';
        Scanner input = new Scanner(System.in);

        do{
            System.out.println("Are you a student? (Type Y or N): ");
            custStud = input.next().charAt(0);
            custStud = Character.toLowerCase(custStud);
        }
        while (custStud != 'y' && custStud != 'n');
        System.out.print("\n answer:"+custStud);