Java i metoda split - błąd


(Pawlus1993) #1

Witam serdecznie,

testuje działanie metody split() i napotykam na problem. Dla np. takich danych wejściowych:    jeden dwa     program nie wyśweitla komunikatów "OK" mimo, że wczesniej jak je wypisuje to mają one takie wartości.

Ktoś może widzi gdzieś jakiś prosty błąd? Próbowałem bez i z trim() i efekty są takie same mimo iż System.out.println prawidłowo wyświetla wartości na ekran czyli jeden i dwa.

 

        Scanner stdin = new Scanner(System.in);

        String s = new String(stdin.nextLine());


(Rolek0) #2

( ͡º ͜ʖ͡º)

W Javie == użyte na referencjach (wszelkie typy obiektowe są w Javie referencjami) porównuje referencje , czyli sprawdza czy jest to ten sam obiekt, a nie czy jest taki sam.

Do sprawdzania czy obiekty są takie same służy metoda .equals()

if(a.equals(b)){}

W przypadku _String_ów możesz jeszcze użyć metody .compareTo()

int p = a.compareTo(b);
if(p < 0) { /* a < b */ }
if(p == 0) { /* a == b */ }
if(p > 0) { /* a > b */ }

(bjonczy) #3

I ZAWSZE upewnij się, że to na czym wołasz equals nie jest nullem (dostaniesz NullPointerException). Jeśli porównujesz coś do konkretnego stringa, to najlepiej w odwrotnej kolejności, np.:

"wartość".equals(zmienna)

A jeśli zmienna do zmiennej, to np.

zmienna2 != null && zmienna2.equals(zmienna1)