NumberFormatException , mit Try/Catch?

Sturmi

Mitglied
Hallo zusammen,

ich befasse mich seit kurzer Zeit erst mit Java und habe nun ein kleineres Problem mit meinem ersten eigenen Programm bei dem ich im Moment nicht weiter weiß.

Kurz zur Erklärung, ich bastel mir im Moment einen eigenen kleinen Rechner der momentan nur die vier Grundrechenarten abdecken soll ,also Plus, Minus, Geteilt und Mal. Ein paar naja Fehler hab ich schon aus dem Weg geschafft, z.B. das nur + , - , / und * als Rechenzeichen benutzt werden dürfen, oder das man keine Division durch 0 machen darf. Nun wollte ich noch ausschliessen, das der Benutzer einen Buchstaben als Zahl eingibt. Da ich Knöpfe per javax.swing.JOptionPane.showInputDialog erstellt habe, schaff ich es nicht diese mit einem if zu entfernen, bzw. ich schaffe es nicht mal einen Try/Catch Block zu erstellen. Falls mir jemand Tipps und bitte nur Tipps, keinen kompletten Code, für mein Problem geben kann, wäre ich sehr froh.

TLDR:

Wie verhindere ich eine Exception durch Eingabe eines Buchstaben für x oder y? Und wie kann ich einen Try/Catch Block erstellen der diese abfängt.

Mit freundlichen Grüßen

Sturmi


Hier noch kurz der Code

Java:
public class Main {

    
    static double x = Double.parseDouble(javax.swing.JOptionPane.showInputDialog("Zahl 1"));
    static char operator = javax.swing.JOptionPane.showInputDialog("Rechenzeichen").charAt(0);
    static double y = Double.parseDouble(javax.swing.JOptionPane.showInputDialog("Zahl 2"));
    
    
    public static void main(String[] args) {

       if(Double.isNaN(x) || Double.isNaN(y))
       {System.err.println("Bitte nur Zahlen eingeben");
        return;
       }
       switch (operator)
       {
           case '+':
               System.out.println("Ergebnis:" + " " +  (x + y) );
           break;
           
           case '-':
               System.out.println("Ergebnis:" + " " + (x - y));
           break;
           
           case '*':
               System.out.println("Ergebnis:" + " " + (x * y));
           break;
           
           case '/':
               if(y==0)
                    {System.err.println("Keine Division durch Null");
                     return;}

                     System.out.println("Ergebnis:" + " " + (x / y));
           break;
           
           default:
               System.err.println("Unbekanntes Rechenzeichen:" + " " + operator);
       }

    }

}
 

Otzelot

Mitglied
Hi,
versuch es mal so.

Oben die Variable erstmal nur: static double x; und versuche dann in der Main-Methode die Variable zu belegen mithilfe von:
Java:
try{ }
    catch (NumberFormatException ex){}
In der Try Klammer muss dann das rein wie du die Variable belegen willst. Weiß nicht ob dir das schon zu nah an der eigentlichen Lösung ist aber anders wusste ich nicht wie ich dich auf den richtigen Weg bringen soll und du musst immerhin noch den try Block und catch Block ausfüllen ;-)
 
S

SlaterB

Gast
x und y und operator auch für sich besser nicht statisch, wem ist damit geholten?
lokale Variablen in der main-Methoden gehen genauso
 

eRaaaa

Top Contributor
Eine andere Idee wäre, sich einen eigenen Dialog zu erstellen, mit eigenem Textfeld, wo dann auch nur Zahlen eingegeben werden können....

/edit:
Oder aber so etwas wie
Java:
	String input = javax.swing.JOptionPane.showInputDialog("Zahl 1");
	double x = 0, y = 0;
	if (input.matches("\\d+")) {
	    x = Double.parseDouble(input);
	} else {
	    System.out.println("ERROR!");
	    return;
	}
 
Zuletzt bearbeitet:

Sturmi

Mitglied
x und y und operator auch für sich besser nicht statisch, wem ist damit geholten?
lokale Variablen in der main-Methoden gehen genauso

Das mit dem static hat mich auch schon irritiert, aber :

Wenn ich static vor meinen Variablen wegmache kommt : non-static variable x cannot be referenced from a static context
und wenn ich das static in meiner Funktion wegmache kommt: Class "rechner.Main" doesnt have a main method.

Deshalb hat es mich zwar gewundert, aber ich hab das static davor gemacht, weil es sonst garnicht funktioniert hätte.
 

Otzelot

Mitglied
Es ging ihm darum, dass du die Variable nicht für die ganze Klasse deklarierst sondern nur für die main-Methode. Dort kannst du die Variable auch so hinschreiben ohne das "static" davor. Die Main-Methode ist immer "static" ;-)
 

Sturmi

Mitglied
Alles klar, hab jetzt verstanden was ihr mit dem static wolltet (hoffentlich), die Exception hat auch funktioniert und ich habe den Rechner noch um Modulo erweitert.

Falls noch jemand Anregungen hätte was ich an meinem Rechner verbessern kann (so das ich es als Neuling hinbekomme) wäre ich sehr dankbar.

Vielen Dank für die schnelle Hilfe


Hier nochmals der vollständige Code :

Java:
public class Main {

  public static void main(String[] args) {

    double x;
    double y;
    char operator;

       try
       {
           x = Double.parseDouble(javax.swing.JOptionPane.showInputDialog("Zahl 1"));
           operator = javax.swing.JOptionPane.showInputDialog("Rechenzeichen").charAt(0);
           y = Double.parseDouble(javax.swing.JOptionPane.showInputDialog("Zahl 2"));
       }

       catch (NumberFormatException ex)
       {
           System.err.println("Bitte eine Zahl eingeben");
           return;
       }

       if(Double.isNaN(x) || Double.isNaN(y))
       {System.err.println("Bitte nur Zahlen eingeben");
        return;
       }

       switch (operator)
       {
           case '+':
               System.out.println("Ergebnis:" + " " +  (x + y) );
           break;
           
           case '-':
               System.out.println("Ergebnis:" + " " + (x - y));
           break;
           
           case '*':
               System.out.println("Ergebnis:" + " " + (x * y));
           break;

           case '%':
               if(y==0)
               {
                   System.out.println("Bitte nicht 0 eingeben");
                   return;
               }
               
               System.out.println(x % y);
           break;

           case '/':
               if(y==0)
               {
                    System.err.println("Keine Division durch Null");
                    return;
               }

               System.out.println("Ergebnis:" + " " + (x / y));
           break;

           default:
               System.err.println("Unbekanntes Rechenzeichen:" + " " + operator);
       }

    }

}
 

Otzelot

Mitglied
Mal so als Anregung: Versuche mal es hinzukriegen, dass das Programm nicht ständig terminiert. Also wenn ich eine falsche Zahl eingebe soll er mich einfach nochmal nach einer Zahl fragen bis ich auf Cancel drücke oder eine Zahl eingegeben habe und wenn die Rechnung gemacht wurde, kann man noch eine Rechnung machen oder das Programm beenden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P parseInt -> "202103122000" -> NumberFormatException Java Basics - Anfänger-Themen 14
C NumberFormatException: null ohne Ausnahmebehandlung stoppen Java Basics - Anfänger-Themen 7
Jascha NullPointerException vs NumberFormatException Java Basics - Anfänger-Themen 5
K Datentypen NumberFormatException Java Basics - Anfänger-Themen 7
Dogge NumberFormatException null Java Basics - Anfänger-Themen 5
O NumberFormatException Java Basics - Anfänger-Themen 2
D NumberFormatException Java Basics - Anfänger-Themen 13
M Compiler-Fehler Fehler Meldung java.lang.NumberFormatException: empty String Java Basics - Anfänger-Themen 2
D Interpreter-Fehler NumberFormatException Textfeld Java Basics - Anfänger-Themen 24
Furtano Variablen NumberFormatException Java Basics - Anfänger-Themen 14
N NumberFormatException, aber wieso? Java Basics - Anfänger-Themen 5
J Problem mit NumberFormatException Java Basics - Anfänger-Themen 6
M NumberFormatException Chat WordPress Java Basics - Anfänger-Themen 13
C NumberFormatException-Problem Java Basics - Anfänger-Themen 6
StupidAttack NumberFormatException Java Basics - Anfänger-Themen 19
M java.lang.NumberFormatException-Problem Java Basics - Anfänger-Themen 6
M BMI-Rechner NumberFormatException Java Basics - Anfänger-Themen 30
B NumberFormatException: For input string: "" Java Basics - Anfänger-Themen 4
S NumberFormatException Java Basics - Anfänger-Themen 13
K Fehler Meldung java.lang.NumberFormatException: empty String Java Basics - Anfänger-Themen 1
R Warum NumberFormatException? Java Basics - Anfänger-Themen 4
M Abfangen von java.lang.NumberFormatException Java Basics - Anfänger-Themen 6
J Double.parseDouble(s) wirft keine NumberFormatException Java Basics - Anfänger-Themen 12
G NumberFormatException bei double und long Java Basics - Anfänger-Themen 11
M for-Schleife mit NumberFormatException Java Basics - Anfänger-Themen 15
A NumberFormatException Java Basics - Anfänger-Themen 7
B komische NumberFormatException beim DezimalToBinär-Rechner Java Basics - Anfänger-Themen 4
B NumberFormatException Java Basics - Anfänger-Themen 5
F 2 numberformatexception abfangen? Java Basics - Anfänger-Themen 20
S java.lang.NumberFormatException Java Basics - Anfänger-Themen 2
T catch(InputMismatchException) wird nicht ausgefürt/erkannt Java Basics - Anfänger-Themen 12
missy72 Catch Blöcke zusammenfassen Java Basics - Anfänger-Themen 6
Ostkreuz wie geht der catch? Java Basics - Anfänger-Themen 3
D try/catch-Block bei for-Schleife Java Basics - Anfänger-Themen 14
D Best Practice Ausgabe über direkte Ausgabe oder try-catch? Java Basics - Anfänger-Themen 13
districon Try - Catch Java Basics - Anfänger-Themen 8
JavaNoobi Try and Catch und übergabe von Objekten Java Basics - Anfänger-Themen 2
Y Wie kann ich die Variable in der Try Catch returnen? Java Basics - Anfänger-Themen 3
B Try-Catch Block Java Basics - Anfänger-Themen 3
B JUnit / Exceptions/ try-catch Java Basics - Anfänger-Themen 6
B try catch finally Java Basics - Anfänger-Themen 2
F Mehrere Exceptions in einem Catch-Block abfangen Java Basics - Anfänger-Themen 12
H throws und try catch Java Basics - Anfänger-Themen 8
H Try Catch Throw Exception Java Basics - Anfänger-Themen 1
S Try-Catch in Verwendung einer while Schleife Java Basics - Anfänger-Themen 2
I Try-Catch innerhalb eines Catchblocks Java Basics - Anfänger-Themen 1
J Endlosschleife bei Try-Catch? Java Basics - Anfänger-Themen 3
K JOptionPane/catch/try/finally/if Java Basics - Anfänger-Themen 9
V InputMismatchException (Try and catch) Java Basics - Anfänger-Themen 10
L do-while-Schleife läuft doppelt, try catch fehler Java Basics - Anfänger-Themen 12
J Erste Schritte catch Exeption Parameter Java Basics - Anfänger-Themen 7
TheMenox Try and Catch Java Basics - Anfänger-Themen 12
J Try Catch Java Basics - Anfänger-Themen 6
DeVolt Java8 Paket Time: Datum prüfen / try-catch Java Basics - Anfänger-Themen 1
J Code in Try-Catch Block wird nicht komplett ausgeführt Java Basics - Anfänger-Themen 5
J Frage zum Thema Exceptions (Try/Catch) Java Basics - Anfänger-Themen 3
A Nicht zu findender Fehler in einem try/catch Block Java Basics - Anfänger-Themen 6
F try/catch Ausführungen ? Java Basics - Anfänger-Themen 3
S try-catch - Variablen werden nicht an return übergeben Java Basics - Anfänger-Themen 3
Z Catch & Exceptions Java Basics - Anfänger-Themen 4
I Exception try-catch Java Basics - Anfänger-Themen 1
E Buchstaben verhindern / Try & Catch Block Java Basics - Anfänger-Themen 3
F try/catch - (else) Java Basics - Anfänger-Themen 11
L Warum ist der catch-Block nicht erreichbar ? Java Basics - Anfänger-Themen 8
C Problem mit try-catch in Schleife Java Basics - Anfänger-Themen 15
R Exceptions (try/catch) Java Basics - Anfänger-Themen 63
H Geht dieser Code noch einfacher (try catch finally) Java Basics - Anfänger-Themen 7
J Methoden try / catch exception Java Basics - Anfänger-Themen 5
S 'continue' in catch- und if-blöcken Java Basics - Anfänger-Themen 2
B Erste Schritte try-catch-Klauseln, überprüfte Ausnahmen Java Basics - Anfänger-Themen 4
D Erste Schritte Warum try-catch für FileWriter Java Basics - Anfänger-Themen 5
S try-catch-finally-Problem Java Basics - Anfänger-Themen 10
xehpuk Compiler-Fehler final Variable in try-catch Wert zuweisen Java Basics - Anfänger-Themen 8
F Exceptionbehandlung --> catch/throws Java Basics - Anfänger-Themen 11
M Try und Catch Java Basics - Anfänger-Themen 5
B Fehler mit try + catch verhindern Java Basics - Anfänger-Themen 8
N Catch Block in Try erzwingen Java Basics - Anfänger-Themen 14
E Problem mit for schleife/ try-catch block Java Basics - Anfänger-Themen 7
B Variablen Variablen in try / catch "public" machen? Java Basics - Anfänger-Themen 3
C Wiederholung von try-catch Java Basics - Anfänger-Themen 3
N try and catch block in finally Java Basics - Anfänger-Themen 8
M exception catch falsch? Java Basics - Anfänger-Themen 11
S catch Exception erklären Java Basics - Anfänger-Themen 2
C Variable in try/catch Java Basics - Anfänger-Themen 10
B Try and Catch Java Basics - Anfänger-Themen 6
StrikeTom Ein paar(2) Fragen zu throws und try + catch Java Basics - Anfänger-Themen 6
J try und catch Java Basics - Anfänger-Themen 7
G Exceptionfreie Anweisungen in try-catch-Blöcke, Java Basics - Anfänger-Themen 6
B Exception vor catch Block definieren Java Basics - Anfänger-Themen 9
M Frage zu try ... catch Java Basics - Anfänger-Themen 9
B Try/catch Java Basics - Anfänger-Themen 11
M Try & Catch Java Basics - Anfänger-Themen 7
V Was ist ein Try-Catch Block Java Basics - Anfänger-Themen 4
M Nach catch mit der schleife weitermachen Java Basics - Anfänger-Themen 9
M try-catch, call-by-reference, Streaming und Strings Java Basics - Anfänger-Themen 10
S sauberer Stil von return Wert (try, catch, finally) Java Basics - Anfänger-Themen 9
S try-catch Java Basics - Anfänger-Themen 10
Tandibur Server führt "try-catch" nicht aus Java Basics - Anfänger-Themen 6
H Falsche Eingabe über try-catch abfangen Java Basics - Anfänger-Themen 2
I Frage zu Try - Catch - Finally Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben