ugotowany_kamien
#naukaprogramowania #java
uczę się scannera i nie wiem gdzie popełniłem błąd. Jak wpisuje dodawanie to od razu wyskakuje "nie da rady"
double a;
double b;
String zadanie;

Scanner odczyt = new Scanner(System.in);
System.out.println("co chcesz robić?");
zadanie=odczyt.nextLine();
if (zadanie == "dodawanie")
{
System.out.println("Podaj pierwszą liczbę: ");
a = odczyt.nextDouble();
System.out.println("Podaj drugą liczbę: ");
b = odczyt.nextDouble();
System.out.println("Twój wynik to: " + (a + b));
}
else
{
System.out.println("Nie da rady");
}
1
  • Najlepsze
  • Wszystkie komentarze
Eoghan
Tym samym == zwróci false nawet tutaj: "asdf" == "asdf"


@Edhendil: nieprawda, zwróci true, bo literały String są internowane
5
fegwegw
@ugotowany_kamien: .equals a nie '=='
4
D.....o
D.....o
@ugotowany_kamien: poczytaj o porównywaniu obiektów
1
Veuch
@ugotowany_kamien: nigdy nie porównuj stringów przez "==" tylko przez metodę ".equals"
1
ugotowany_kamien
@fegwegw: @Duze_p--o: @Veuch: @Edhendil: ok dzięki
1
Edhendil
@ugotowany_kamien: W przypadku obiektów operator porównania (==) sprawdza czy to są te same obiekty (te same referencje). W zmiennej 'zadanie' będzie jakiś String, a "dodawanie" to jakaś inna instancja String. Tym samym == zwróci false nawet tutaj: "asdf" == "asdf". Jeśli chcesz porównywać obiekty użyj .equals() np. if ("dodawanie".equals(zadanie)).
0
R.....z
R.....z
@ugotowany_kamien: nawet spoko do nauki, na przyszłość:
http://www.samouczekprogramisty.pl/kurs-programowania-java/
Twój problem w punkcie 14.
0
Edhendil
@Eoghan: W prostym przypadku to prawda. Trochę sytuacja się zmienia, gdy literałów jest dużo i ich liczba przekracza maksymalny rozmiar 'string pool'. Wtedy już pewności nie ma co '==' zwróci. Też trochę zależy od konkretnej wersji JVM.
0