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, botów: 0