Simpler String vergleich geht nicht !

  • Antworten:11
Sascha N.
  • Forum-Beiträge: 60

29.11.2013, 08:42:12 via Website

Hallo zusammen.

Hier soll ein einfacher String verglichen werden.

Das log zeigt mir EXAKT die werte die ich eingegeben habe welche identisch sind zu den ctlr werten.
dennoch bekomme ich IMMER den wert failed zurück.

sieht jemand den fehler ???

1public static String userSignIn(String userName, String userPass, String AuthTokenType) {
2 // hier muss die abfrage der daten rein !
3 String Result;
4 String ctrluserName = "username";
5 String ctrluserPass = "password";
6 if ((userName == ctrluserName) && (userPass == ctrluserPass)) {
7 Result = "success";
8 } else Result = "failed";
9 Log.i("TuningTreffenAuth", "Username = " + userName + "Password = " + userPass);
10 Log.i("returnwert", Result);
11 return Result;
12 // return "6brkb0c39e5q8g1grkgjkjqomis9f15j";
13 }

gruss Sascha

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

29.11.2013, 08:46:10 via Website

1if(userName.equals(ctrluserName))

Schon mal in irgendwelchen "Basics" gelesen? :smug:

if all else fails, read the instructions.

Antworten
Michele
  • Forum-Beiträge: 1.525

29.11.2013, 08:46:34 via Website

Hallo Sascha.

Du hast hier schon öfters Sachen gezeigt und gefragt als ob du mehr wüsstest.

Aber du weißt nicht mal wie man ein String vergleicht?

So vergleicht man kein String.
Und Google sagt dir sofort was, wenn du suchen würdest.

Edit: Klaus hat es dir ja nun schon verraten.


LG

— geändert am 29.11.2013, 09:02:59

Antworten
Fabian
  • Forum-Beiträge: 144

29.11.2013, 10:22:14 via App

Was du hier machst ist die Variable userName mit der ctrlUserName Variable vergleichen. userName und userPass sind aber nicht einmal initialisiert und das sowieso nicht vergleichbar. Außerdem vergleicht man Strings mit equals().

Grüße Fabian

— geändert am 29.11.2013, 10:24:00

Antworten
Artem B.
  • Forum-Beiträge: 64

29.11.2013, 11:31:03 via Website

Hier ist alles gut erklärt. Warum, wie und was die Wrapperklasen sind.

1http://docs.oracle.com/javase/6/docs/api/java/lang/String.html
2http://de.wikibooks.org/wiki/Java_Standard:_Wrapperklassen


das man so was nicht "googeln" kann ist für mich schwer nachvollziehbar.

— geändert am 29.11.2013, 11:33:41

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

29.11.2013, 13:47:38 via App

Mit dem Operator == überprüfst du ob die String instanzen gleich sind und eine nebebsächlichkeit ist der text.

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

Antworten
Sascha N.
  • Forum-Beiträge: 60

29.11.2013, 14:53:26 via App

ich muss mich wohl entschuldigen. ich habe in Google geschaut. das ist immer meine erste Anlauf stelle bevor ich hier etwas poste.

bin nur ziemlich Überrascht das es eine extra Methode gibt zum vergleichen von strings. jede andere programmier Sprache die ich kenne vergleicht string Inhalte auf diese weise.

dennnoch danke.

was das initialisieren angeht. was ist da nicht initialisiert ? die Werte werden als Parameter ubergeben zum Vergleich.

oder ist das auch falsch ?

Antworten
Artem B.
  • Forum-Beiträge: 64

29.11.2013, 15:31:29 via Website

Java ist eben etwas anders, bis vor kurzem (SE7) konnte man z.B nicht switch für Strings machen ...

— geändert am 29.11.2013, 15:36:26

Antworten
Michele
  • Forum-Beiträge: 1.525

29.11.2013, 15:52:07 via Website

Hallo.

Mit Sicherheit hast du kein Google benutzt.

Denn ich gab " String vergleichen" ein und fand an erster stelle das hier:

http://www.java-blog-buch.de/0302-strings-vergleichen/

Da wird alles erklärt was "String vergleichen" angeht.


LG

Antworten
impjor
  • Forum-Beiträge: 1.793

29.11.2013, 16:43:36 via App

Bei Java ist String halt wie Integer, Boolean, usw. keine primitiven Typen (die man mit == vergleicht), sondern Objecte. Du hast also so etwas nur mit Strings gemacht:
Auto a = new Auto();
Auto b = new Auto();
a == b liefert false, da es nicht um die selbe Instanz handelt. So ist es auch mit Strings.
a.equuals(b) liefert true, wenn die Funktion korrekt implementiert ist und z.B. die Farbe des Autos vergleicht.

In vielen anderen Sprachen kann man Operatoren überladen, da überlädt die String-Klasse eben den ==-Operator und macht das selbe wie in Java die equuals-Funktion.

LG

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Sascha N.
  • Forum-Beiträge: 60

29.11.2013, 17:27:23 via App

Java ist wirklich was anderes. aber nach und nach steigt man dahinter. alles Übungssache. ich lerne es ja zur Zeit. und jedes mal wenn man etwas gelernt hat kommt der aha Effekt :)

ich bin nur froh das ihr so viel Geduld mit mir zeigt :)

Antworten
Andy N.
  • Forum-Beiträge: 3.112

29.11.2013, 20:59:29 via Website

Naja, Java macht das schon richtig, andere Sprachen wie Python beugen sich dem Komfort.

Antworten