所以我对Java和编码总体上非常陌生。我被要求编写一个程序来询问用户一个谜语并以“正确!”作出回应。或者“错了!”取决于答案。我认为if else if
语句可以解决问题,但它没有返回所需的结果。答案"man"
或"a man"
都被认为是正确的(大写并不重要Ex“mAn”仍然是正确的,但“man!”不会)。
import java.util.Scanner;
public class HW3 {
public static void main(String[] args) {
System.out.print("What walks on four legs in the morning, two legs in the afternoon, and three legs in the evening? ");
Scanner input = new Scanner(System.in);
String Answer = input.next();
if(Answer.equals("man"))
System.out.println("Correct!");
else
System.out.println("Wrong!");
if (Answer.equals("a man"))
System.out.println("Correct!");
else
System.out.println("Wrong!");
}
}
答案 0 :(得分:1)
这里有一些问题。首先,next()
只读取util最接近的空格,因此如果"a man"
是可接受的答案,则应使用nextLine()
代替。
其次,如果答案的案例不是问题(例如,"man"
,"Man"
和"mAn"
都是正确的),您应该处理它。有几种方法可以做到,但最简单的方法可能是在评估之前将输入的答案转换为小写。
第三,如果答案不是"man"
,那么即使答案不是,else
条款也会打印"Wrong!"
。解决此问题的一种方法是使用else if
子句:
String answer = input.nextLine().toLowerCase();
if (answer.equals("man")) {
System.out.println("Correct!");
} else if (answer.equals("a man")) {
System.out.println("Correct!");
} else {
System.out.println("Wrong!");
}
但是,更简洁的方法是简单地使用逻辑||
("或")运算符:
String answer = input.nextLine().toLowerCase();
if (answer.equals("man") || answer.equals("a man")) {
System.out.println("Correct!");
} else {
System.out.println("Wrong!");
}
答案 1 :(得分:0)
将input.next()
替换为input.nextLine()
'input.next()'是以空格分隔的,即在输入字符串中找到“空格”字符后“停止”。
编辑:您的条件逻辑也存在缺陷,例如,如果输入“男人”,则在正确的情况下输入错误信息。
摆脱第一个“其他”声明。如果使用OR进行检查,请将两个正确的条件合并为一个。