Lista rozwijana JOptionPane

0

Moim celem było stworzenie okienka z rozwijaną listą w której mam dodawanie, odejmowanie, mnożenie i dzielenie. Oczywiście mam stworzoną osobną klasę z metodami. Mam jednak problem. Nie wiem w jaki sposób zrobić aby z listy rozwijanej wybrać np dzielenie i ma pokazać się okienko tylko z wynikiem dzielenia.
U mnie jest tak, że wybieram dzielenie, ale otwierają się po kolei okienka z wszystkimi wynikami. Jak to poprawić. Zrobiłem tak, że przepisałem pod zmienne s1 ... s4 te stringi, które mam w tablicy, ale to jest zapewne rozwiązanie bez sensu. Jak to poprawić ?

import javax.swing.JDialog;
import javax.swing.JOptionPane;

public class Start {

public static void main(String[] args) {

	double a;
	double b;


	a = Double.parseDouble(JOptionPane.showInputDialog("Podaj a"));
	b = Double.parseDouble(JOptionPane.showInputDialog("Podaj b"));
	

	String[] choices = { "Dodawanie", "Odejmowanie", "Mnożenie",
			"Dzielenie" };
	String input = (String) JOptionPane.showInputDialog(null, "Wybierz",
			"The Choice of a Lifetime", JOptionPane.QUESTION_MESSAGE, null,
			choices, 
			choices[1]); 
	System.out.println(input);
	Metody r1 = new Metody();
	String s1 = "Mnożenie";
	String s2 = "Dodawanie";
	String s3 = "Odejmowanie";
	String s4 = "Dzielenie";
	if (s1 == "Mnożenie") {
		JOptionPane.showMessageDialog(null, "Wynik " + r1.mnozenie(a, b),
				"Mnożenie", JOptionPane.PLAIN_MESSAGE, null);
		;
	}
	if (s2 == "Dodawanie") {
		JOptionPane.showMessageDialog(null, "Wynik " + r1.dodawanie(a, b),
				"Dodawanie", JOptionPane.PLAIN_MESSAGE, null);
		;
	}
	if (s3 == "Odejmowanie") {
		JOptionPane.showMessageDialog(null,
				"Wynik " + r1.odejmowanie(a, b), "Odejmowanie",
				JOptionPane.PLAIN_MESSAGE, null);
		;
	}
	if (s4 == "Dzielenie") {
		JOptionPane.showMessageDialog(null, "Wynik " + r1.dzielenie(a, b),
				"Dzielenie", JOptionPane.PLAIN_MESSAGE, null);
		;
	}

	System.exit(0);
}

}

0

Zwróć uwagę, że w ifach sprawdzasz wartości stringów a nie z listy.
Zamiast if(xx=="costam") powinieneś mieć if(input=="costam")

0
Lacrim napisał(a)

Zwróć uwagę, że w ifach sprawdzasz wartości stringów a nie z listy.
Zamiast if(xx=="costam") powinieneś mieć if(input=="costam")

Dziękuję takie proste :P To rozwiązało problem. Wielkie Dzięki !!

0

Poza tym lepiej używaj String.equals. W twoim przypadku, gdzie Stringi są w jednej klasie to możesz niby je porównywać przez ==, ale gdy np te Stringi dostawałbyś z zewnątrz to takie porównania dałyby wynik negatywny.

0
Wibowit napisał(a)

Poza tym lepiej używaj String.equals. W twoim przypadku, gdzie Stringi są w jednej klasie to możesz niby je porównywać przez ==, ale gdy np te Stringi dostawałbyś z zewnątrz to takie porównania dałyby wynik negatywny.

Okej, a mógłbyś pokazać jak powinna wyglądać taka pętla z String.equals, bo jestem początkujący dosyć, czytałem o equals, ale jeszcze zbytnio nie wiem jak to dostosować.

0

Zamiast:

zmiennaTypuString == "wartość"

Daj:

zmiennaTypuString.equals("wartość")

Albo jeszcze lepiej (to zadziała nawet wtedy, gdy zmiennaTypuString ma wartość null):

"wartość".equals(zmiennaTypuString)

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