Fehler beim Versuch zu gucken ob ein String in einer String[] vorhanden ist!

  • Antworten:3
  • Bentwortet
Jonah H.
  • Forum-Beiträge: 21

02.06.2016, 16:34:28 via Website

Hier ist mein Code:

String[] sStageP = new String[]{ "5", "6", "7", "8", "9", "10", "S", "Alle"};

    boolean sStagePF = false;
    for(int i = 0; i < sStageP.length; i++) {
        Log.d("TESTTEST", "sStagep[" + i + "]:|" + sStageP[i] + "| sStage:|" + sStage + "|");
        if(sStageP[i] == sStage){
            sStagePF = true;
            break;
        }
    }
    if(sStagePF != true){
        sStage = "Alle";
    }

Zu dem Zeitpunkt der Ausführung ist sStage = "10" und der Log gibt auch aus
D/TESTTEST: sStagep[5]:|10| sStage:|10| aber das if Statement gibt nicht true aus!
Was mache ich falsch?

Antworten
Klaus T.
  • Forum-Beiträge: 8.183

02.06.2016, 16:47:45 via Website

Nicht "if(sStageP[i] == sStage....", probier mal if( sStageP[i].equals(sStage) ...

if all else fails, read the instructions.

Antworten
Jonah H.
  • Forum-Beiträge: 21

02.06.2016, 16:53:18 via Website

Danke das scheint zu funktionieren, aber könntest du
mir auch sagen wo der Fehler genau liegt, ich bin relativ neu in Java
und benutze normalerweise C# und dort würde der Code so wie er
war funktionieren. ;)

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

02.06.2016, 16:58:09 via App

Funktionieten ja, aber nicht in allen Fällen.
Egal ob C# oder Java nimm immer #Equals(..).
Funktioniert zuverlässiger.
Mit == vergleichst du die Instanzen des Steing aber nicht den Inhalt. Anscheinend hat Microsoft bei C# in der String Klasse den == operator anders definiert als in Java.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten