[+] JAVA - niedzia

Potrzebujesz pomocy z C, C++, perl, python, itp.
Awatar użytkownika
@Debian
Posty: 31
Rejestracja: 11 maja 2009, 23:06
Lokalizacja: Kirkcaldy (Szkocja)

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

Post 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ć.
button
Beginner
Posty: 242
Rejestracja: 04 marca 2008, 16:39

Post 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.
ODPOWIEDZ