Prüfen ob eine Double-Variable Daten enthält

Dziko

Grünschnabel
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:
		//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);
		// 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
		}

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

Freue mich auf Nachricht.

viele Grüße
:)
 
Wenn ich micht nicht irre kannst du das mit
Code:
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
 
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.
 
Vielen dank, das hat mich ein guten Schritt weitergebracht!
Hat wunderbar geklappt.

Code:
Code:
		try{
		//Umwandlung der Stings in einen Double-Datentyp
		double Hz = Double.parseDouble(SHzE);
		double Nz = Double.parseDouble(SNzE);
                }catch(NumberFormatException Nz){
			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
 
Zuletzt bearbeitet:
Code:
        try{
        //Umwandlung der Stings in einen Double-Datentyp
        double Hz = Double.parseDouble(SHzE);
        double Nz = Double.parseDouble(SNzE);
                }catch(NumberFormatException Nz){
            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:
Java:
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_Sprache_Java/Exceptions/9.html


Aber mal eine dumme Frage:
Du hattest im Catch-Teil geschrieben:
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. ä. :confused:

Gruß
KLaus
 
Zuletzt bearbeitet:
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.
 
[...]

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. ä. :confused:

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
 
Zurück