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.
boolean istInt(String s) {
boolean result = false;
try {
Integer.parseInt(s);
result = true;
} catch (NumberFormatException e) {}
return result;
}
...
if (istInt("Will keine Zahl sein :-("))
Oki, sorry leuts, vllt kann mir nochmal jemand helfen, es klappt zum verrecken nicht:
Code:
eingabeZeile = Terminal.askString("points> ");
String[] punkte = eingabeZeile.split("\\s");
if(isInt(eingabeZeile) == true){
System.out.println("Error! " + "\nFehlerhafte Eingabe, bitte Zwei zahlen eingeben. ");
}else{
int i = Integer.parseInt(punkte[0]);
int j = Integer.parseInt(punkte[1]);
if(feld.contains(new Point(i, j))== true){
//Überprüfung ob Punkt bereits vorhanden
System.out.println("Error! " + "\nDieser Punkt ist bereits vorhanden.");
}else{
//Countererhöhung und einfügen
counter++;
feld.insert(i, j);
}
}
Ich hab den Code auf die Wesentlichen Teile reduziert, wenns unverständlich ist, bitte sagen, dann Poste ich alles.
Ich bekomme beim Durchlaufn folgendes Problem:
Erster Versuch:
points> 5 6
points> 7 8
Exception in thread "main" java.lang.NullPointerException
at Field.contains(Field.java:60)
at Shell.main(Shell.java:42)
Zweiter Versuch:
points> 5
Error!
Fehlerhafte Eingabe, bitte Zwei zahlen eingeben.
points> 55 sa
Exception in thread "main" java.lang.NumberFormatException: For input string: "sa"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at Shell.main(Shell.java:40)
Wobei die Zahl mit absicht weggelassen worden ist, um zu sehen, ob mein Programm den Fehler verhindert, was es aber nicht tut
Einfacher als ein if/else ist in diesem Fall doch ein try/catch in einer Endlosschleife, die beendet wird, sobald der Code im try-Block ohne Probleme abgearbeitet wurde:
Code:
while (true) { try {
int i = Integer.parseInt(...);
int j = Integer.parseInt(...);
hier.mit.den.Zahlen.arbeiten();
break;
} catch (NumberFormatException ex) {
hier.den.fehlerhaften.Input.melden();
}}
@ JPKI
Nur leider haben wir das try / catch verfahren noch nicht im UNterricht behandelt, und da ich noch absoluter NEuling bin, würde auffallen, wenn ich das benutzen würde..aber trotzem danke!
@Hobbit
Oioi, echt super vielen lieben Dank für den hinweis!!
Die anderen Lösungen funktionieren auch - wenn man nur positive Integer verwendet. Sobald ein Vorzeichen (z. B. -) im String ist, erkennen beide andere Verfahren den Integer nicht mehr. Sollte sich aber seeeeeeeeehr einfach erweitern lassen .
auf "false" hab erkennt er nicht, dass es zwei zahlen sind:
points> 5 2
Error!
Fehlerhafte Eingabe, bitte Zwei zahlen eingeben.
wenn ichs aber auf true setzte, gibt er mir, gebe ich z.B. nur ein Leerzeichen ein, folgende Meldung:
points>
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at Shell.main(Shell.java:39)
(Hier zeile 39 & 40)
Code:
int i = Integer.parseInt(punkte[0]);
int j = Integer.parseInt(punkte[1]);
also nochmal, der soll alles was kein int ist, nicht akzeptieren.
Gibt es eigentlich ne Möglichkeit, dass ich ihn ein Leerzeichen, das evtl vor ner Zahl gemacht, wegmachen lasse, damit er danach mit der Zahl arbeiten Kann??