Strona 1 z 1

[+] JAVA - niedziałające porównanie if else

: 15 stycznia 2011, 23:34
autor: @Debian
Witam!

Piszę program w javie i mam idiotycznie proste porównanie:

Kod: Zaznacz cały

String name = jtextfield1.getText();
if (name == "root")
     JOptionPane.showMessageDialog(null, "OK", "Tytul", 1);
else
     JOptionPane.showMessageDialog(null, "NIE OK", "Tytul", 1);
Problem polega na tym, że dane sa pobierane itd... ALE if cały czas źle wykonuje porównanie. Kiedy wpisuje wartość root wyrzuca mi

Kod: Zaznacz cały

JOptionPane.showMessageDialog(null, "NIE OK", "Tytul", 1);
a powinno to drugie, bo jest to przecież ta wartość jakiej potrzebuję. Nie mam pojęcia dlaczego tak się dzieje. Przecież wszystko wydaje się być OK.

ROZWIĄZANIE

Udało mi się rozwiązać problem. Należy do porównania użyć składni:

Kod: Zaznacz cały

if (name.equals("root"))
Ale nie wiem dlaczego zwyczajne porównanie wartości wskazywało błędne wywołanie. Jeżeli ktoś zna odpowiedź to prosze napisać.

: 16 stycznia 2011, 12:05
autor: button
Udało mi się rozwiązać problem. Należy do porównania użyć składni:

Kod: Zaznacz cały

if (name.equals("root"))
Ale nie wiem dlaczego zwyczajne porównanie wartości wskazywało błędne wywołanie. Jeżeli ktoś zna odpowiedź to prosze napisać.
Bo Java to nie C++. Java nie oferuje możliwości przeciążania operatorów, więc operator == zawsze porównuje referencje. Do porównywania wartości obiektów zawsze należy używać metody equals.