-2

I have an issue with the if/else function in my Java code (Android / Eclipse).

When I'm in debug mode, checkGender is equal to "M", but goes directly to "else" instruction and considers that 'checkGender' is not equal to "M". I don't understand why? For information, searcher.getString("Gender") takes information from MySQL.

String checkGender = "";

checkGender = searcher.getString("Gender");

if(checkGender == "M")
{
    bGenderM.setChecked(true);
}
else
{
    bGenderF.setChecked(true);
}

Debug info : checkGender = "M" (id=8300460...) value[0] = M

If I replace "searcher.getString("Gender");" by a simple "M", it works.

Thanks for your help.

Tom

M Khalid Junaid
  • 63,861
  • 10
  • 90
  • 118

2 Answers2

2

Actually best would be to do it "Yoda-style"

if("M".equals(checkGender)) {
     //code for male
} else {
     //code for female
}

That way you avoid potential NullPointerException for the case that checkGender == null

donfuxx
  • 11,277
  • 6
  • 44
  • 76
1

Use equals() method instead of == for String comparison.

if(checkGender.equals("M")) {

    bGenderM.setChecked(true);

} else {

    bGenderF.setChecked(true);

}

OR, use equalsIgnoreCase() method and it better...

if(checkGender.equalsIgnoreCase("M")) {

    bGenderM.setChecked(true);

} else {

    bGenderF.setChecked(true);

}
Hamid Shatu
  • 9,664
  • 4
  • 30
  • 41