为什么这个java输入验证循环不起作用

时间:2014-12-20 03:08:50

标签: java

   import java.util.Scanner;

   //this program test input validation yes or no program

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

    System.out.println("Enter yes or no ");
         input=keyboard.nextLine();
        first=input.charAt(0);
        System.out.print(first);
         while( first !='y' || first !='n')
          {
        System.out.println("please enter yes or no");
          }

       }
   }

试图让程序得到的是,如果用户没有输入是或否,用户必须保持在while循环中。

4 个答案:

答案 0 :(得分:2)

将此更改为

while( first !='y' || first !='n') {
        System.out.println("please enter yes or no");
}

这个

while( first !='y' && first !='n') {
        System.out.println("please enter yes or no");
}

因为(first !='y' || first !='n')始终为真。

如果first =='y',则first !='n'为真

如果first =='n',则first !='y'为真。

所以虽然条件总是如此 您需要的不是||而是&& [和]

答案 1 :(得分:1)

while( first !='y' || first !='n') is always true. 

用以下代码替换您的代码:

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

答案 2 :(得分:1)

while( first !='y' || first !='n')永远是真的。 由于OR操作如下工作

条件1条件2结果

TRUE TRUE TRUE

TRUE FALSE TRUE

FALSE TRUE

FALSE FALSE FALSE

在您的情况下,一个条件将始终为true,因此每次都进入while循环 AND操作的工作原理如下

条件1条件2结果

TRUE TRUE TRUE

是的错误

FALSE TRUE FALSE

FALSE FALSE FALSE

所以不要使用OR尝试使用AND 例如while( first !='y' && first !='n')

答案 3 :(得分:1)

您应该将代码更改为

boolean b=false;
while(b==false){
    if(first !='y' || first !='n'){
        System.out.println("please enter yes or no");
    } else {
        b=true;
    }
}