web-dev-qa-db-ja.com

文字列比較-Android

次のコードを使用して2つの文字列を比較することはできません。

「gender」という名前の文字列があり、その値として「Male」または「Female」があります。

if(gender == "Male")
   salutation ="Mr.";
if(gender == "Female")
   salutation ="Ms.";

これはうまくいきませんでしたので、次のことを試しました:

String g1="Male";
String g2="Female";
if(gender.equals(g1))
   salutation ="Mr.";
if(gender.equals(g2))
   salutation ="Ms.";

繰り返しますが、うまくいきませんでした。 ifステートメントを使用して文字列値を比較する方法を教えてください。

37
Raghav Kumar

これを試して

if(gender.equals("Male"))
 salutation ="Mr.";
if(gender.equals("Female"))
 salutation ="Ms.";

Ifステートメントの;(semi-colon)も削除します

if(gender.equals(g1));

Javaでは、初心者が最もよく遭遇する間違いの1つは、==を使用して文字列を比較することです。覚えておく必要があります。==はコンテンツではなくオブジェクト参照を比較します。

82

Intや他の数値変数とは異なり、文字列はJavaで他の言語とは異なって比較されます。

Java(Android)の文字列を比較するには、メソッド.compareTo();を使用します。

したがって、コードは次のようになります。

if(gender.compareTo("Male")==0){
   salutation ="Mr.";
}
if(gender.compareTo("Female")==0){
   salutation ="Ms.";
}
12
ManuelAlvaradoh

In Java上記のように文字列を比較することはありません...ここに文字列比較があります...

    if (gender.equalsIgnoreCase("Male")) {
        salutation = "Mr.";
    } else if (gender.equalsIgnoreCase("Female")) {
        salutation = "Ms.";
    }
8
SilentKiller

上記の答えは正しいと思います。==は2つの文字列が同じオブジェクトであるかどうかをテストするためです。一方、.equals()は2つの文字列が同じ値を持つかどうかをテストします.

7
anjaly

==演算子は、2つのオブジェクトがまったく同じオブジェクトであるかどうかを確認します。 2つの文字列は異なるオブジェクトである場合がありますが、値は同じです(文字列がまったく同じです)。 .equals()メソッドを使用して、文字列が等しいかどうかを比較します。

http://www.leepoint.net/notes-Java/data/strings/12stringcomparison.html

4
bema

_gender == "Male"_は、実際にオブジェクトgenderと異なるオブジェクトMaleのオブジェクト参照を比較しています。使用する必要があるのは、オブジェクトの値を比較する.equals()メソッドです。

4
midhunhk

これを試して

_String g1="Male";
    String g2="Female";
    if(gender.equals(g1))
       salutation ="Mr.";
    if(gender.equals(g2))
       salutation ="Ms.";
_

ifステートメントif(gender.equals(g1)); << ---ここに「;」を追加して終了していました

3
Shiv
String g1="Male";
String g2="Female";
String salutation="";
String gender="Male";
if(gender.toLowerCase().trim().equals(g1.toLowerCase().trim()));
   salutation ="Mr.";
if(gender.toLowerCase().trim().equals(g2.toLowerCase().trim()));
   salutation ="Ms.";
3
Arun C

これを試して。

        String g1 = "Male";
        String g2 = "Female";
        String gender = "Male";
        String salutation = "";
        if (gender.equalsIgnoreCase(g1))

            salutation = "Mr.";
        else if (gender.equalsIgnoreCase(g2))

            salutation = "Ms.";
        System.out.println("Welcome " + salutation);

出力:

Welcome Mr.
3
Imran Ali

これは動作するはずです:

if(gender.equals("Male")){
 salutation ="Mr.";
}
else if(gender.equals("Female")){
 salutation ="Ms.";
}

ifステートメントの後に;を使用しないでください。

2
Jainendra

さらに、2つの文字列が異なるかどうかを比較する場合は、次を使用できます。

String mystring = "something";
!mystring.equals("whatever")

Trueを返します!

1
if(gender.equals(g1)); <---
if(gender == "Female"); <---

If.REMOVE ITの後にセミコロンがあります。

0
Vipul Shah

これは私のために働く:

 if (email.equals("[email protected]") && pass.equals("123ss") ){
        Toast.makeText(this,"Logged in",Toast.LENGTH_LONG).show();
    }
    else{

        Toast.makeText(this,"Logged out",Toast.LENGTH_LONG).show();
    }
0
Fahim Md. Riaz

ContentEquals()関数を使用できます。役に立つかもしれません。

0
Ashwin Mothilal

実際、ここではすべてのコードが正常に実行されますが、問題はおそらくgender変数に起因します。比較の前に単純なSystem.out.println(gender);を実行しようとしましたか?

0
e1che