2

重複の可能性:
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 を入力すると、それは正しくないと表示されます。なんで勝てないの?

4

3 に答える 3

4

を使用して文字列を比較しないでください==。代わりにequals(...)またはメソッドを使用してください。equalsIgnoreCase(...)== は、2 つのオブジェクトが同じであるかどうかをチェックすることを理解してください。だから代わりに

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

行う、

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

また、

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

このサイトで何百万回も尋ねられ、回答されているだけなので、この質問を閉じるために投票してください。

于 2012-09-24T00:38:49.230 に答える
3

Java でよくある間違いの 1 つです。.equals()文字列にはではなく が必要です==

違う:

if (str == "foo") {

}

右:

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

}
于 2012-09-24T00:39:18.077 に答える
0

あなたのコードは完璧ですが、比較方法だけが間違っています。==他のすべての言語は比較演算子として扱われます。しかし、Java の場合は少しトリッキーです。Java では==、文字列変数ではなく、オブジェクトの比較演算子として使用されます。

したがって、2 つの String を比較する`.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");
        }
    }
}
于 2012-09-24T00:51:11.497 に答える