Hallo, bei folgendem Code soll der Benutzer eine Zahl erraten, die sich der Computer "ausgedacht" hat. Zusätzlich soll es drei Schwierigkeitsgrade geben.
Ich glaube das die while-Schleife für diesen Teil des Codes das komplette Programm blockiert, denn wenn ich sie auskommentiere, habe ich so viele Versuche wie ich will, wenn ich sie wieder einfüge, habe ich nur einen Versuch, die Zahl zu erraten, danach geht nichts mehr. Vielleicht ist es auch ein Denkfehler. Vielen Dank für eure Hilfe.
Ich glaube das die while-Schleife für diesen Teil des Codes das komplette Programm blockiert, denn wenn ich sie auskommentiere, habe ich so viele Versuche wie ich will, wenn ich sie wieder einfüge, habe ich nur einen Versuch, die Zahl zu erraten, danach geht nichts mehr. Vielleicht ist es auch ein Denkfehler. Vielen Dank für eure Hilfe.
Java:
public static void main(String[] args) {
int wertebereich = 100; //Die "ausgedachte" Zahl kann von 0 bis 100 gehen.
errateZahl(wertebereich);
}
public static int errateZahl(int wertebereich) {
Scanner s = new Scanner(System.in);
int zufallsZahl = (int) (Math.random() * wertebereich);
System.out.println(zufallsZahl); //Zum überprüfen gebe ich sie jedes Mal mit aus.
System.out.println("Welchen Schwierigkeitsgrad möchten Sie spielen? (leicht, mittel, schwer): ");
String grad = s.next();
System.out.println("Geben Sie Ihre Zahl ein: ");
int rateZahl = s.nextInt();
int i = 1;
boolean quit = false;
while(rateZahl!=zufallsZahl) { //Diese Schleife überprüft, ob man die Zahl schon erraten hat.
if(rateZahl<zufallsZahl) {
System.out.println("Die Zahl "+rateZahl+" war zu klein. Versuchen Sie es noch mal: ");
}else if(rateZahl>zufallsZahl) {
System.out.println("Die Zahl "+rateZahl+" zu groß. Versuchen Sie es noch mal.");
}
rateZahl = s.nextInt(); //Falls man die Zahl nicht erraten hat, kommt hier der nächste Versuch.
i++;
while(quit == false) { //Diese Schleife ist das Problem. Wenn ich sie raus nehme, klappt alles wie vorher, ich habe unbegrenzte Versuche. Ist sie drin, kann ich nur ein mal raten. Es kommt dann nicht einmal die Meldung "Sie haben die Anzahl von Versuchen überschritten".
if(grad.equals("leicht")&& i>20) {
quit = true;
System.out.println("Sie haben die Anzahl von Versuchen überschritten.");
}else if(grad.equals("mittel")&& i>15) {
quit = true;
System.out.println("Sie haben die Anzahl von Versuchen überschritten.");
}else if(grad.equals("schwer")&& i>10) {
quit = true;
System.out.println("Sie haben die Anzahl von Versuchen überschritten.");
}
}
}
System.out.println("***ERRATEN*** Herzlichen Glühstrumpf!!! Sie haben "+ i+ " Versuche gebraucht.");
return zufallsZahl;
}
}