【发布时间】:2015-11-30 06:16:55
【问题描述】:
我的目标是从用户那里获得特定的输入(仅限 A、B、C 和 D)。
例如:如果我输入字母 A,if 语句将执行(它不应该执行)。和 do while 一样。 (逻辑错误)
char[] response = new char[20];
Scanner k = new Scanner(System.in);
//Prompts User to fill array with their responses
for(int i=0; i<response.length; i++) {
//Input validation
do {
System.out.println("Answer "+(i+1)+":");
response[i] = k.nextLine().charAt(0);
if(response[i] != 'A' ||response[i] != 'B' || response[i] != 'C' ||response[i] != 'D')
System.out.print("Try Again. ");
}
while(response[i]!= 'A' ||response[i] != 'B' ||response[i] != 'C' ||response[i] != 'D');
}
【问题讨论】:
-
你有一个逻辑缺陷,不要使用 or 条件(它总是符合逻辑的),而是使用 and 语句,推理,如果响应等于
A,B,C or D然后其他三个条件仍然成立。 -
我猜你得到的是小写字母'a'、'b'等而不是大写'A'、'B'等?尝试
System.out.println(response[i]);进行调试。