Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hab folgendes Problem: ich möchte nur Zahlen über die Tastatur einlesen und zwar nur Zahlen. Hider der Code:
Code:
import java.io.*;
public class Calc
{
public static void main(String[] args)
{
String ZahlS;
char operator;
try
{
BufferedReader eingabe = new BufferedReader ( new InputStreamReader (System.in));
ZahlS = eingabe.readLine();
Double.parseDouble(ZahlS);
System.out.print(ZahlS);
}
catch (IOException e)
{
System.out.println("Keine Buchstaben!");
}
}
}
Sobald ich etwas anderes als eine Zahl eingebe kommt ne Fehlermeldung (hier unter Eingabe von "d")
"Exception in thread "main" java.lang.NumberFormatException: For input string: "d"
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)
at Calc.main(Calc.java:22)"
Ich habs ja versucht mit (IOException e) abzufangen... funzt aber nicht.
Kann mir jemand ein Tip geben? Vorzugsweise einen bei dem das Programm nach dem Fehler weiterlaufen kann. (Im Sinne von "Buchstaben sind unzulässig! Bitte nur Zahlen eingeben")
Wie du an der ausgeworfenen Exception siehst handelt es sich nicht um eine IOException sondern um eine NumberFormatException. Also musst du um die zu catchen: catch(NumberFormatException e) {} verwenden
der alte Catch Block bleibt natürlich!
Ne while schleife machst du drum weil du ja so lange weiter einlesen willst,
bis der benutzer eine gültige zahl eingibt.
@Wildcart
Aber dafür hab ich mir ja noch die mühe gemacht Code zu posten, was mehr eindruck schindet :lol:
(Ich bin vieleicht nicht der schnellste im Antworten-posten, aber ich weiß mich zu wehren :lol: :wink: )
Aber ne frage hätte ich nochmal. Wie würdest du die while-schleife schreiben?
oder anders gefragt, wie kann man überprüfen, ob etwas ne Exception rauswirft
(Ja ich bin auch noch anfänger *g*)
Man könnte es auch eleganter lösen indem man ne methode schreibt die durch die exception wieder aufgerufen wird.[/u]
Hey danke Jungs! Hab heute erst gesehen, was ihr da fabriziert habt...
Das wird mir sicher weiterhelfen!
Ich habe mich noch nicht sehr ausführlich mit Exceptions beschäftigt. Daher die Frage: Was sagt das "e", "ioe" bzw das "nfe" am Ende von (IOException ...)? Und kennt jemand eine Übersicht über alle Exception-Arten?