Java输入失败

Java输入失败,java,string,java.util.scanner,Java,String,Java.util.scanner,可能重复: 我做错了什么?编译并运行程序后,我键入输入,无论输入是什么,程序总是将其视为不正确的输入,并说我错了,如下所示: import java.util.Scanner; public class mena3 { public static void main(String[] args) { Scanner user_input = new Scanner(System.in); String Capitol; System

可能重复:

我做错了什么?编译并运行程序后,我键入输入,无论输入是什么,程序总是将其视为不正确的输入,并说我错了,如下所示:

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,它说那是不正确的。为什么我不能赢?

不要使用
=
比较字符串。请改用
equals(…)
equalsIgnoreCase(…)
方法。了解==检查两个对象是否相同,这不是您感兴趣的。另一方面,这些方法检查两个字符串是否具有相同顺序的相同字符,这就是这里的问题所在。所以不是

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

或者


投票结束这个问题,因为这个问题在这个网站上只被询问和回答了无数次。

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

错:

if (str == "foo") {

}
对:

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

}

您的代码是完美的,只是您的比较方法是错误的。所有其他语言都将
==
视为比较运算符。但对于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");
        }
    }
}

你的打字速度太快了。他可能已经预先写好了答案,因为这个问题被问到的频率太高了。是的-这个问题的核心可能是这个网站上最常见的问题(我昨天才自己回答了一个)。我会把答案放在手边,这样我就可以复制粘贴它,这样我就可以“赢得”回答比赛:)-1实际上你错了<代码>“a”==“a”始终为真!“慢”输入,但还是+1上一票。你有点慢。。。其他答案在你回答之前7分钟就已经出现了,他们说的都是同样的事情。各位,很抱歉,这是另一个被问得太频繁的问题,谢谢你们的耐心和回答。
if ("foo".equals(str)) { // done in this order to avoid NPE

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