用户输入和Java中的.equals()问题

时间:2013-11-09 13:33:43

标签: java string

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

6 个答案:

答案 0 :(得分:2)

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

甚至可以使用明确的大括号,例如if(foo) { bar(); }

答案 1 :(得分:1)

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

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的结尾。这告诉编译器它是行的结尾。因此,为什么两个“正确!”和“不正确!”正在展示。因为它们不是条件声明的一部分。

希望这有帮助! :)

答案 2 :(得分:1)

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

代码应如下所示:

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

值得一提的是,扫描仪还有其他方法来读取用户输入,例如:你可以像这样读取Integer而不是String:Integer answer = answer = user_input.nextInt();然后你只需比较整数:

if (answer == 20) {
    System.out.println("Correct!");
} else {
    System.out.println("Incorrect!");
}

答案 3 :(得分:1)

找到你的解决方案兄弟....... 提示:对于String,使用“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!");             
        }
    }

}

答案 4 :(得分:0)

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

if (...); a;

相当于

 if (...)
 {
 }

 a;

虽然你的意思是

if (...)
{
    a;
}

答案 5 :(得分: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");