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

时间:2015-02-08 19:16:29

标签: java string if-statement input

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

2 个答案:

答案 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进行检查,请将两个正确的条件合并为一个。