If w Java (początkujący)

0

Witajcie.
Od paru dni uczę się prężnie Javy. Dziś pisałem kolejny treningowy program (tym razem połączenie instrukcji warunkowej z właściwościami String) i mam pewien problem/pytanie.

import java.util.Scanner;
public class Test {

	public static void main(String[] args) {
		
		Scanner input = new Scanner (System.in);
		System.out.println("Podaj zdanie");
		String s = input.nextLine();
		System.out.println("Podaj wyraz, którego chcesz znaleźć index");
		System.out.println(s.indexOf(input.nextLine()));
		System.out.println("Chcesz dowiedzieć się ile liter ma to zdanie?");
		String o = input.nextLine();
		if (o == "tak")
		{
			System.out.println("To zdanie ma " + o.length() + " liter");
		}
		else
		{
			System.out.println("Nie to nie :D");
		}
	}

}

Mój problem polega na tym, że przy wpisaniu "tak" do String'a o nie wykonuje się instrukcja zawarta w if tylko zawsze to co jest w else. Co źle robię? Jak już wspomniałem dopiero co zaczynam więc proszę o wyrozumiałość jeżeli mój problem jest błahy. Przy okazji prosiłbym o sprawdzenie czy mój kod jest poprawny (czy można napisać to samo jakoś lepiej?). Dziękuję za pomoc :)

0

Bo stringi się porównuje za pomocą metody Equals().

0

Wielkie dzięki!
A co do dalszej części mojego postu, mój kod jest poprawny czy jest inna (lepsza?) metoda aby to zapisać?

1

Owszem jest:

                if(o.equals("tak")) System.out.println("To zdanie ma 3 litery"); // bo skoro `o` ma wartość "tak" to długość jest 3
                else System.out.println("Nie to nie :D"); // nie potrzebujesz klamer przy jednej instrukcji
0

Jeżeli chodzi o to pierwsze to właśnie przy poprawie błędu z if zauważyłem ten problem. Mała literówka :)
Co do else do dziękuję za uwagę- bardzo przydatna :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1