【问题标题】:Java coding- a prompt with multiple right answersJava 编码 - 带有多个正确答案的提示
【发布时间】:2015-02-08 19:16:28
【问题描述】:

所以我对 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!");
    }
}

【问题讨论】:

  • 您的一个问题可能是input.next() 只检索一个单词。因此,如果用户键入"a man",则变量将设置为"a"。您需要改用input.nextLine()。您可能还想考虑在同一行中同时使用 elseif
  • 如果大小写无关紧要,您应该使用String.equalsIgnoreCase()
  • 你研究过布尔运算||(或)了吗?你有研究过else if吗?

标签: java string if-statement input


【解决方案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!");
}

【讨论】:

  • 哇,谢谢,我很困惑为什么它只接受“男人”作为正确答案。我非常感谢您的帮助;我完全忘记了||操作员!我会根据您的意见修改我的工作。
【解决方案2】:

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

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

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

摆脱第一个“else”语句。更好的是,如果使用 OR 进行检查,则将两个正确的条件合二为一。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多