tutorials.de Buch-Aktion 05/2012
Like Tree4Danke
  • 1 Beitrag von o3rn
  • 1 Beitrag von Kai008
  • 1 Beitrag von vfl_freak
  • 1 Beitrag von Anime-Otaku
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
1720
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Dziko Dziko ist offline Grünschnabel
    Registriert seit
    Feb 2010
    Beiträge
    3
    Hallo zusammen,

    ich habe ein Problem und zwar habe ich zwei Variablen, welche jeweils mit JOptionPane.showInputDialog("text"); mit Daten gefüllt werden.
    Da ich gerade am Anfang stehe, tue ich mich schwer mit der Abfrage einer Variable vom Datentyp Double ob diese Daten enthält oder nicht.

    Ich habe hier einmal mein Codeausschnitt,

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
            //Willkommens Nachricht
            JOptionPane.showMessageDialog(null, "Willkommen, Benutzer!\n\nKlicken sie auf OK um mit der Berechnung\nihrer Telefonrechnung zu beginnen.\nVielen Dank.");
            // Eingabedialoge & Erstellunge zweier Strings
            String SHzE = JOptionPane.showInputDialog("Bitte geben sie nun ihrer Einheiten während der Hauptgesprächszeit an!");
            String SNzE = JOptionPane.showInputDialog("Bitte geben sie nun ihrer Einheiten während der Nebengesprächszeit an!");
            //Umwandlung der Stings in einen Double-Datentyp
            double Hz = Double.parseDouble(SHzE);
            double Nz = Double.parseDouble(SNzE);
            [B][COLOR="DarkOrange"]// Prüfen ob Eingaben in beiden Eingabefenstern getätigt wurden, wenn nicht dann = 0 setzen!
            if(Hz == null || Nz == null){
                JOptionPane.showMessageDialog(null,"test"); // zum testen
            }[/COLOR][/B]

    Dieser Teil funktioniert nicht, und ich weiß nicht wie ich es ausdrücken kann.

    Freue mich auf Nachricht.

    viele Grüße
     

  2. #2
    o3rn o3rn ist offline Mitglied
    Registriert seit
    Oct 2009
    Beiträge
    19
    Wenn ich micht nicht irre kannst du das mit
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    try {
    Da kommt das parsen rein
     
    }catch(NumberFormatException) {
     
    Hier die Fehlermeldung
    }

    Jetzt sollte dein programm einen Fehler auspucken wenn das einzugebene Feld leer oder Buchstaben enthält...
    Hoffe ich konnte helfen

    greats o3rn
    Dziko bedankt sich. 

  3. #3
    Kai008 Kai008 ist offline Mitglied Brillant
    Registriert seit
    May 2008
    Ort
    Brunn/Geb. (Niederösterreich)
    Beiträge
    944
    Blog-Einträge
    1
    Primitive Dateitypen (int, double, float, byte, short, class, long, event zählt void auch dazu) sind afaik keine "einfachen" Referenzen wie bei Objecten sondern Verknüpfungen, die an die Variablen gebunden sind- Auf jeden Fall können sie nicht auf null gesetzt und dementsprechen danach geprüft werden. Am besten geht das wohl, indem du wie o3rn sagte in nem try parst.
    Dziko bedankt sich. 

  4. #4
    Dziko Dziko ist offline Grünschnabel
    Registriert seit
    Feb 2010
    Beiträge
    3
    Vielen dank, das hat mich ein guten Schritt weitergebracht!
    Hat wunderbar geklappt.

    Code:
    Code :
    1
    2
    3
    4
    5
    6
    7
    
            try{
            //Umwandlung der Stings in einen Double-Datentyp
            double [COLOR="Blue"]Hz[/COLOR] = Double.parseDouble(SHzE);
            double [COLOR="Red"]Nz[/COLOR] = Double.parseDouble(SNzE);
                    }catch(NumberFormatException [COLOR="Red"]Nz[/COLOR]){
                JOptionPane.showMessageDialog(null,"Es ist ein Fehler aufgetreten!\n\nBitte achten sie darauf nur ganze Zahlen wie 0 oder 3 anzugeben!");           
                }

    Eine Frage wäre da aber noch offen, ich muss ja bei NumberFormatException anschließend noch eine Variable angeben.
    Ich verstehe das so, das dann nur und ausschließlich diese überprüft wird, ist das richtig?

    Weil ich habe oben ja zwei double Variablen, und überprüfe aber in der Catchanweisung nur die Nz Variable.
    Das Programm wirft aber auch eine Fehlermeldung aus, wenn die Variable Hz leer ist oder z.B. Buchstaben enthält.

    Wie muss ich das verstehen?

    viele Grüße
    Dziko
    Geändert von Dziko (11.02.10 um 00:37 Uhr)
     

  5. #5
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Zitat Zitat von Dziko Beitrag anzeigen
    Code :
    1
    2
    3
    4
    5
    6
    7
    
            try{
            //Umwandlung der Stings in einen Double-Datentyp
            double [COLOR=Blue]Hz[/COLOR] = Double.parseDouble(SHzE);
            double [COLOR=Red]Nz[/COLOR] = Double.parseDouble(SNzE);
                    }catch(NumberFormatException [COLOR=Red]Nz[/COLOR]){
                JOptionPane.showMessageDialog(null,"Es ist ein Fehler aufgetreten!\n\nBitte achten sie darauf nur ganze Zahlen wie 0 oder 3 anzugeben!");            
                }
    Eine Frage wäre da aber noch offen, ich muss ja bei NumberFormatException anschließend noch eine Variable angeben.
    Ich verstehe das so, das dann nur und ausschließlich diese überprüft wird, ist das richtig?

    Weil ich habe oben ja zwei double Variablen, und überprüfe aber in der Catchanweisung nur die Nz Variable.
    Das Programm wirft aber auch eine Fehlermeldung aus, wenn die Variable Hz leer ist oder z.B. Buchstaben enthält.

    Wie muss ich das verstehen?
    Moin,

    nein, so geht es nicht!
    Beim "catch" deklarierst Du eine eigene Variable für die Exception !
    Das sind NICHT die Variablen, die überprüft werden sollen ! !

    So wäre es richtig:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    try
    {
        // Umwandlung der Stings in einen Double-Datentyp
        double Hz = Double.parseDouble(SHzE);
        double Nz = Double.parseDouble(SNzE);
     
    }
    catch( NumberFormatException ex )
    {
        ex.printStackTrace();
    }


    vgl. auch hier:
    http://www.dpunkt.de/java/Die_Sprach...eptions/9.html


    Aber mal eine dumme Frage:
    Du hattest im Catch-Teil geschrieben:
    Zitat Zitat von Dziko Beitrag anzeigen
    Bitte achten sie darauf nur ganze Zahlen wie 0 oder 3 anzugeben!
    Warum liest Du dann in einen Double ein und nicht gleich in einen Integer o. ä.

    Gruß
    KLaus
    Geändert von vfl_freak (11.02.10 um 07:55 Uhr)
    Dziko bedankt sich. 
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  6. #6
    Anime-Otaku Anime-Otaku ist offline Mitglied Brillant
    Registriert seit
    Aug 2005
    Ort
    Karlsruhe (Baden-Württemberg)
    Beiträge
    905
    Zitat Zitat von Kai008 Beitrag anzeigen
    Primitive Dateitypen (int, double, float, byte, short, class, long, event zählt void auch dazu) sind afaik keine "einfachen" Referenzen wie bei Objecten sondern Verknüpfungen, die an die Variablen gebunden sind- Auf jeden Fall können sie nicht auf null gesetzt und dementsprechen danach geprüft werden. Am besten geht das wohl, indem du wie o3rn sagte in nem try parst.
    Das stimmt. Deshalb gibt es auch die Datentypen nochmal in nicht primitiver Form. Diese werden groß und ausgeschrieben. Z.b.: int->Integer double->Double.

    Wenn du also eine Double Zahl brauchst, welche null sein kann, musst du das große Double verwenden.

    Hier kannst du mit Double.valueOf(string) oder Double.valueOf(doubleWert) dir ein Objekt generieren lassen.

    P.S.: new Double bzw. new Integer sollte man nicht verwenden. Immer Double.valueOf(wert) verwenden, da hier ggf. aus dem Cache eine Zahl verwenden werden kann.
    Dziko bedankt sich. 
    Wäre super wenn ihr euren Code in dieser Form einfügt:
    Code java:
    1
    
    System.out.println("Hello World");
    [java]System.out.println("Hello World");[/java]
    Für erledigte Threads dürft ihr den "erledigt"-Button anklicken!
    Über Dank freut sich jeder, der euch geholfen hat - ein Klick auf "Danke" kostet ja nicht mal was
    Blog: http://javaeffective.wordpress.com/

  7. #7
    Dziko Dziko ist offline Grünschnabel
    Registriert seit
    Feb 2010
    Beiträge
    3
    Zitat Zitat von vfl_freak Beitrag anzeigen
    [...]

    Aber mal eine dumme Frage:
    Du hattest im Catch-Teil geschrieben:


    Warum liest Du dann in einen Double ein und nicht gleich in einen Integer o. ä.

    Gruß
    KLaus
    Guten morgen,

    erstmal vielen Dank für die Aufklärung, ich denke ich bin nun im Bilde!

    Zu deiner Frage:
    Wir erstellen gerade in der Schule ein kleines Programm womit wir die Eingaben so behandeln, als seien diese Telefoneinheiten.
    Dann berechnen wir diese mit MWSt & Grundgebühr etc. daher sollen wir hier mit Double arbeiten.

    Wir stehen noch komplett am Anfang.

    Eigentlich sollen wir an dieser Stelle noch keine Try-Catch Anweisung einbinden, dies ist eher vorbereitend für mich.

    viele Grüße
    Dz
     

Ähnliche Themen

  1. Antworten: 9
    Letzter Beitrag: 08.09.10, 19:54
  2. mehrere Daten in eine Variable
    Von Pho3nix im Forum PHP
    Antworten: 4
    Letzter Beitrag: 09.06.10, 07:23
  3. [Matlab] Überprüfen ob eine Variable einen Wert enthält
    Von venom im Forum Sonstige Sprachen
    Antworten: 6
    Letzter Beitrag: 18.03.08, 11:22
  4. Antworten: 2
    Letzter Beitrag: 01.05.07, 16:07
  5. prüfen, ob eine bestimmte variable exisitiert
    Von Visual EZ++ im Forum Java
    Antworten: 12
    Letzter Beitrag: 08.03.06, 13:37