Java输入失败

时间:2012-09-24 00:37:01

标签: java string java.util.scanner

  

可能重复:
  How do I compare strings in Java?

我做错了什么?在编译并运行程序之后,我输入我的输入,无论它是什么,程序总是把它作为一个不正确的输入,并说我错了,在这里:

import java.util.Scanner;

public class mena3 {

    public static void main(String[] args) {
        Scanner user_input = new Scanner(System.in);

        String Capitol;
        System.out.print("Enter the capitol of Morocco: ");
        Capitol = user_input.next();

        if(Capitol == "Rabat") {
            System.out.println("Good Job!");
        }
        else {
            System.out.println("That is incorrect");
        }
    }
}

在我放入拉巴特之后,它说这是不正确的。如果我放入l,它说这是不正确的。为什么我不能赢?

3 个答案:

答案 0 :(得分:4)

不要使用==比较字符串。请改用equals(...)equalsIgnoreCase(...)方法。理解==检查两个对象是否相同而不是您感兴趣的。另一方面,这些方法检查两个字符串是否具有相同顺序的相同字符,并且这才是最重要的。而不是

if (fu == "bar") {
  // do something
}

做,

if ("bar".equals(fu)) {
  // do something
}

,或者

if ("bar".equalsIgnoreCase(fu)) {
  // do something
}

投票决定关闭这个问题,因为它只在本网站上被问过并回答了无数次。

答案 1 :(得分:3)

java中最常见的错误之一。字符串需要.equals()而不是==

错:

if (str == "foo") {

}

右:

if ("foo".equals(str)) { // done in this order to avoid NPE

}

答案 2 :(得分:0)

您的代码非常完美,只有您的比较方法有误。所有其他语言都将==视为比较运算符。但是在Java的情况下,它有点棘手。这里的Java ==被用作对象的比较运算符,而不是字符串变量。

因此,为了比较两个字符串,你有一个名为`.equals()的方法,它来自String类,它是自己的。

因此您需要相应地更改代码,

import java.util.Scanner;

public class mena3 
{
    public static void main(String[] args) 
    {
        Scanner user_input = new Scanner(System.in);

        String Capitol;
        System.out.print("Enter the capitol of Morocco: ");
        Capitol = user_input.next();

//        if(Capitol == "Rabat")  // your previous code
        if(Capitol .equals ( "Rabat") ) // new updated comparison code
        {
            System.out.println("Good Job!");
        }
        else 
        {
            System.out.println("That is incorrect");
        }
    }
}