0

我对java编码相当陌生,但错误是如果我输入正确答案或错误答案,它仍然会同时显示正确和错误。

import java.util.Scanner;
public class MathTest {
    public static void main(String[] args) {
        Scanner user_input = new Scanner(System.in);
        System.out.println("What is 5 times 4? ");
        String question;
        question = user_input.next();
        if (question.equals(20));
        System.out.println("Correct!");
        if (!"20".equals(question));
        System.out.println("Incorrect!");
    }
}
4

6 回答 6

2

删除 if 语句末尾的分号。它被视为空行。

甚至使用显式花括号,例如if(foo) { bar(); }.

于 2013-11-09T13:36:31.210 回答
1

您的条件 if 有点错误,应该这样做:(未经测试)

import java.util.Scanner;
public class MathTest {
    public static void main(String[] args) {
        Scanner user_input = new Scanner(System.in);
        System.out.println("What is 5 times 4? ");
        String question;
        question = user_input.next();
        if (question.equals("20"))
            System.out.println("Correct!");
        if (!"20".equals(question))
            System.out.println("Incorrect!");
    }
}

在您的原始代码中,您有;在 if 的末尾。它通知编译器它是行的结尾。因此,为什么两者都“正确!” 和“不正确!” 正在显示。因为它们不是条件语句的一部分。

希望这可以帮助!:)

于 2013-11-09T13:38:57.523 回答
1

分号结束 if 语句,因此每个 if 下面的语句将始终执行。此外: if (question.equals(20)) 应该是 if (question.equals("20")) 因为用户输入是字符串并且您想要比较字符串。

代码应如下所示:

public class MathTest {

    public static void main(String[] args) {
        Scanner user_input = new Scanner(System.in);
        System.out.println("What is 5 times 4? ");
        String question;
        question = user_input.next();
        if (question.equals("20")) {
            System.out.println("Correct!");
        }
        if (!"20".equals(question)) {
            System.out.println("Incorrect!");
        }
    }
}

值得一提的是,Scanner 还有其他读取用户输入的方法,例如,您可以读取 Integer 而不是 String,如下所示: Integer answer = answer = user_input.nextInt(); 然后你只需比较整数,如:

if (answer == 20) {
    System.out.println("Correct!");
} else {
    System.out.println("Incorrect!");
}
于 2013-11-09T13:40:51.577 回答
1

找到你的解决方案 兄弟....... 提示:对于字符串使用“20”而不是 20

公共类解决方案{

    public static void main(String[] args) {
        Scanner user_input = new Scanner(System.in);
        System.out.println("What is 5 times 4? ");
        String question;
        question = user_input.next();
        if (question.equals("20")){
        System.out.println("Correct!");
        }else{
              System.out.println("Incorrect!");             
        }
    }

}

于 2013-11-09T13:55:07.337 回答
0

那是因为 if 后面有一个分号。删除它,最好在 println 语句周围加上花括号,以显示哪些语句属于 if。现在,你已经写了

if (...); a;

这相当于

 if (...)
 {
 }

 a;

虽然你的意思是

if (...)
{
    a;
}
于 2013-11-09T13:37:25.893 回答
0

让它变得简单

    Scanner user_input = new Scanner(System.in);
    System.out.println("What is 5 times 4? ");
    System.out.println(user_input.next().equals("20") ? "Correct" : "Incorrect");
于 2013-11-09T13:50:19.043 回答