Lista rozwijana JOptionPane

Odpowiedz Nowy wątek
2011-07-27 11:05
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);
}

}

Pozostało 580 znaków

2011-07-27 11:07
0

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

edytowany 1x, ostatnio: Lacrim, 2011-07-27 11:08

Pozostało 580 znaków

2011-07-27 11:11
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 !!

Pozostało 580 znaków

2011-07-27 11:44
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.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.

Pozostało 580 znaków

2011-07-27 15:03
Patryk_1425
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ć.

Pozostało 580 znaków

2011-07-27 15:37
0

Zamiast:

zmiennaTypuString == "wartość"

Daj:

zmiennaTypuString.equals("wartość")

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

"wartość".equals(zmiennaTypuString)

"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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