Wątek przeniesiony 2015-03-16 07:17 z Java przez bogdans.

Porównywanie stringów

0

Witam mam program Logo Quiz w Javie z użyciem JFrame i zrobiłem że gdy do pola tekstowego wpisze się Skype powinno być, że dobra odpowiedź a wyskakuje że zła. Co mam zrobić, jak poprawić kod? Część kodu w której jest błąd:

public void actionPerformed(ActionEvent e) {
	odp = "Skype";
	if (zyc==0){
		JOptionPane.showMessageDialog(this, "Przegrałeś");
		dispose();
	}
	else{
		if (tf1.getText()==odp){
			JOptionPane.showMessageDialog(this, "Odpowiedź prawidłowa. Dostajesz 1 punkt.");
			pkt += 1;
			Latwy2 lat2 = new Latwy2();
			dispose();
		}
		else{
			JOptionPane.showMessageDialog(this, "Odpowiedź nieprawidłowa tracisz jedną sznase");
			zyc = zyc-1;
			Zle zle = new Zle();
			dispose();
		}
	}
	
}
}
0

stringi w Javie porównuje się za pomocą equals()

1

if (tf1.getText()==odp)
Powinno być
if (tf1.getText().equals(odp))

Stringi porównuje się metodą equals, którą posiada kazdy obiekt. Korzystając z == porównujesz adres z pewnymi wyjątkami.

0

Dzięki za pomoc

0

Ja mam jeszcze małą sugestię.

Użytkownicy mogą wpisywać nazwy marek bez zachowania wielkości liter. Jeśli dopuszczasz możliwość, że zarówno odpowiedź skype oraz Skype powinna być poprawna, możesz użyć metody equalsIgnoreCase():

if (tf1.getText().equalsIgnoreCase(odp)){
	//....
}

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