所以我对 Java 和一般编码非常陌生。我被要求编写一个程序,向用户询问一个谜语并回答“正确!”或“错了!”取决于答案。我认为
if else if
语句可以解决问题,但它没有返回所需的结果。答案 "man"
或 "a man"
都被认为是正确的(并且大小写并不重要,例如“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!");
}
}
这里有一些问题。首先,
next()
仅读取最接近的空白,因此如果 "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!");
}
将
input.next()
替换为 input.nextLine()
'input.next()' 是空格分隔的,即它在输入字符串中找到“空格”字符后“停止”。
编辑:您的条件逻辑也有缺陷,例如,如果您输入“a man”,您会在正确消息之前收到错误消息。
去掉第一个“else”语句。更好的是,如果使用 OR 检查,则将两个正确的条件合并为一个。
无效运行(){ // TODO: 在下面写下你的代码
if (treeRight())
{
move();
}
while (!treeRight())
{
turnRight();
move();
}
if (treeFront())
{
turnLeft();
turnLeft();
}
if (!treeFront())
{
move();
turnLeft();
turnLeft();
if (treeRight() & (treeLeft()))
putLeaf();
move();
if (treeFront())
turnLeft();
turnLeft();
}
}
检查我的修复道路代码