Exception Probleme



  • [ void add()
    throws IOException
    {
    BufferedReader din = new BufferedReader(new InputStreamReader(System.in));

    System.out.println("Geben sie die erste Zahl ein:");
    Zeichen1 = din.readLine();

    System.out.println("Geben sie die zweite Zahl ein:");
    Zeichen2 = din.readLine();

    checkitz1 = Zeichen1.indexOf(",");
    checkitz2 = Zeichen2.indexOf(",");

    if(checkitz1 == -1)
    {
    izahl1 = Integer.parseInt(Zeichen1);
    izahl2 = Integer.parseInt(Zeichen2);
    iergebnis=izahl1+izahl2;

    System.out.println("Ihr Ergebnis: "+iergebnis);
    }
    else
    {
    Zeichen1.replace("," , ".");
    Zeichen2.replace("," , ".");

    fzahl1 = Float.parseFloat(Zeichen1);
    fzahl2 = Float.parseFloat(Zeichen2);
    fergebnis = fzahl1+fzahl2;

    System.out.println("Ihr Ergebnis: "+fergebnis);
    }
    }]

    Das Problem ist hier bei mir, dass Irgendwie die Stringumwandlung nach Float nicht geht. Sobald irgendwie nen punkt oder komma im string stehen, wandelt er die nicht mehr in einer float größe um. Eher kommt dieses Problem:

    Hauptmenu:
    ------------------------
    (1)Addition
    (2)Subtraktion
    (3)Multiplikation
    (4)Division
    :
    1
    Geben sie die erste Zahl ein:
    2,4
    Geben sie die zweite Zahl ein:
    6,2
    Exception in thread "main" java.lang.NumberFormatException: For input string: "2,4"
    at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
    at java.lang.Float.parseFloat(Unknown Source)
    at ClassZuP4.add(ClassZuP4.java:81)
    at ClassZuP4.menu(ClassZuP4.java:34)
    at P4.main(P4.java:16)

    -----------------------------------------------------------------------------

    Kann mir jemand helfen? Ich bin Java anfänger...Vorher hab ich mit C++ gearbeitet!



  • Es gibt 2 Möglichkeiten:
    1. Du schreibst 2.4/1.4/5.6 etc.
    2. Du fängst alle eingegebenen , ab und ersetzt sie durch .

    Der Grund ist das internationale/amerikanische Floats mit Punkt und nicht mit Komma geschrieben werden und die deutschen mit Komma.

    -Gruß



  • erstmal danke für die schnelle Antwort...aber es klappt auch mit dem PUNKT nicht.
    Da scheint irgendwas anderes nicht zu funktionieren. Nur ich als leihe sehe das nicht!? Eigentlich wird das , ja abgefragt und umgewandelt durch replace oder nicht? Das ist eine Praktikumsaufgabe für die UNI falls ihr denkt, warum ich das so machen 🙂

    mfg Juan



  • Hi

    bau mal einen try catch um deine convertierung und gib im catchblock die exeption + ggf den stacktrace aus. normalerweise sagt die NumberFormatException auch bei welchem wert es sich verschluckt und wie der aussieht.

    aber apropo da kommt mir grad was in den sinn.

    Zeichen1.replace("," , ".");

    geht das so oder liefert der nur einen String zurück in dem die Kommas durch Punkte ersetzt sind?

    Gruss Termite

    [edit]

    dacht ichs mir doch

    http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#replace(char, char)



  • hallo zusammen. Ja ich hab das mal PROBIRET. Es funktioniert nicht so ganz. Immer noch das gleiche Problem. Hab ich das mit dem IndexOf() richtig gemacht?

    Wo muss ich dieses try catch einbauen und was muss ich da nochmal präzise machen?

    Danke nochmal im vorraus



  • Zeichen1.replace("," , ".");
    

    sollte man so auch nicht machen, da die Schreibweise ab 1000 so aussieht 1,000.00 und er würde es dann falsch replacen. Denke ich jetzt mal so..

    EDIT:
    hmmm.. weiss garnicht ob das jetzt so richtig ist, aber ich lass es mal stehen, dann kann man mich berichtigen 😉



  • Wo muss ich dieses try catch einbauen und was muss ich da nochmal präzise machen?

    das try{}catch(NumberFormatException e) gehört um die Float.parseFloat(); Anweisungen.

    Ungefähr so:

    try{
      float zahl1 = Float.parseFloat(s1);
      float zahl2 = Float.parseFloat(s2);
    }catch(NumberFormatException e){
      e.printStackTrace();
    }
    

Anmelden zum Antworten