Java 编码 - 具有多个正确答案的提示

问题描述 投票:0回答:3

所以我对 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!");
    }
}
java string if-statement input
3个回答
1
投票

这里有一些问题。首先,

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!");
}

0
投票

input.next()
替换为
input.nextLine()

'input.next()' 是空格分隔的,即它在输入字符串中找到“空格”字符后“停止”。

编辑:您的条件逻辑也有缺陷,例如,如果您输入“a man”,您会在正确消息之前收到错误消息。

去掉第一个“else”语句。更好的是,如果使用 OR 检查,则将两个正确的条件合并为一个。


0
投票

无效运行(){ // 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();

    }


            
}
   

检查我的修复道路代码

© www.soinside.com 2019 - 2024. All rights reserved.