Hallo,
ich bin gerade dabei mir im Selbsstudium (und mit den EProg Folien und denen der geführten Gruppe) Java beizubringen, da ich wahrscheinlich nächstes Semester EProg machen werde.
Und da hab ich mal ein kleines ZahlenrateSpiel geschrieben, das weder objektorientiert und schon gar nicht nach Java Beans Spezifikation ist (hab vor 7 - 10 Jahren Pascal und C programmiert und muss mich erst an die Objektorientierte Programmierung gewöhnen - Tips hierfür nehme ich auch gerne an).
Jetzt will ich mit der Scannerfunktion .hasNextInt die Zahl mal auf Gültigkeit überprüfen, nur mal ob sie überhaupt eine IntZahl ist
Um jetzt falls es keine Zahl ist wieder zur Eingabe zurückzukommen habe ich das ganze in die bereits vorhandene Schleife eingebaut.
Und hier ist mein Problem, sobald ich einmal eine ungültige Eingabe mache, befindet er sich in einer Endlosschleife in dem Teil wo keine gültige Eingabe ist.
Kann mir jemand da helfen? Sourcecode siehe unten.
lg Stefan
import java.util.Scanner;
public class Zahlenraten {
public static void main (String[] args) {
System.out.println("Dieses Programm erzeugt eine Zufallszahl zwischen 1 und 1000.");
System.out.println("Du hast 20 Versuche diese Zahl zu erraten.");
System.out.println();
int Zufallszahl = (int) ((Math.random()*1000)+1);
Scanner sc = new Scanner(System.in);
for (int i = 1; i <= 20; i++) {
System.out.println("Versuch Nummer " + i);
System.out.print("Die gesuchte Zahl zwischen 1 und 1000 ist: ");
if (sc.hasNextInt()) {
int versuch = sc.nextInt();
if (versuch == Zufallszahl) {
System.out.println("Richtig, die Zahl ist " + Zufallszahl + ". Erraten beim " + i + ". Versuch.");
System.exit(0);
}
else {
if (versuch > Zufallszahl) {
System.out.println("Die gesuchte Zahl ist kleiner als " + versuch + ".");
}
else {
System.out.println("Die gesuchte Zahl ist grösser als " + versuch + ".");
}
}
}
else { //sobald er einmal auf diesen Else Teil kommt beginnt eine Endlosschleife, er fragt gar nichtmehr nach einer Eingabe
System.out.println();
System.out.println("Ungültige Eingabe, bitte Eingabe wiederholen.");
i--;
}
}
System.out.println("Du hast die Zahl nach 20 Versuchen nicht erraten.");
}
}
Alles anzeigen