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循环中。
答案 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操作如下工作
TRUE TRUE TRUE
TRUE FALSE TRUE
FALSE TRUE
FALSE FALSE FALSE
在您的情况下,一个条件将始终为true,因此每次都进入while循环 AND操作的工作原理如下
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;
}
}