Zahl raten

Zulfiqar

Neues Mitglied
Hallo,

ich, als Anfänger, habe mir ein kleines Zahlen-raten-Spiel programmiert.
Als erstes soll der Spieler 1 seine Zahl eingeben zwischen 1 und 100 (Keine Zufall).
Dann soll geprüft werden, ob eine Zahl zwischen 1 und 100 eingegeben wurde. <-- Das klappt nicht: Wenn ich erst unter 1, dann über 100 und dann unter 1, geht es nicht mehr.
Dann ratet Spieler 2 die Zahl. Ratet er zu hoch, kommt die Meldung "Zu hoch". Ratet er zu klein, kommt die Meldung "Zu klein".

Der Code:
Java:
import java.util.Scanner;

public class Zahlenraten {

  public static void main(String[] args) {
  
    // Person 1 gibt eine Zahl ein
    System.out.println("Person 1: Geben Sie eine Zahl zwischen 1 und 100 ein!");
    Scanner s1 = new Scanner(System.in);
    int zahl = s1.nextInt();
  
    // Überprüfung ob Zahl zwischen 1 und 100 ist
    int kleinsteZahl = 1;
    int groessteZahl = 100;  
    do {
      if (zahl < kleinsteZahl) {
        System.out.println("Die Zahl muss höher sein!");
        Scanner s7 = new Scanner(System.in);
        zahl = s7.nextInt();
      } // end of if
      if (zahl > groessteZahl) {
        System.out.println("Die Zahl muss niedriger sein!");
        Scanner s2 = new Scanner(System.in);
        zahl = s2.nextInt();
      } // end of if
    } while ((zahl < kleinsteZahl)&&(zahl > groessteZahl)); // end of do-while
  
    // Anzeige welche Zahl eingegeben wurde
    System.out.println("Sie haben die Zahl " + zahl + " eingegeben.");
  
    // Person 2 ratet eine Zahl
    System.out.println("Person 2: Raten Sie, welche Zahl Person 1 eingegeben hat!");
    Scanner s3 = new Scanner(System.in);
    int gerateneZahl = s3.nextInt();
  
    do {
      if (gerateneZahl < zahl) {
        System.out.println("Zu klein!");
        Scanner s4 = new Scanner(System.in);
        gerateneZahl = s4.nextInt();
      } // end of if
      else if (gerateneZahl > zahl) {
        System.out.println("Zu groß!");
        Scanner s5 = new Scanner(System.in);
        gerateneZahl = s5.nextInt();
      } // end of if-else
    } while (gerateneZahl != zahl); // end of do-while
  
    // Wenn Person 2 richtig ratet
    System.out.println("Richtig! Das Spiel ist zu Ende!");
  
  } // end of main
} // end of class Zahlenraten

Gibt es auch eine Möglichtkeit, es ohne eine do-while-Schleife, sondern nur mit einer while-Schleife zu programmieren. Wenn ja wie?
 
Zuletzt bearbeitet von einem Moderator:
zur letzten Frage:
Java:
if (gerateneZahl < zahl) {
        System.out.println("Zu klein!");
        Scanner s4 = new Scanner(System.in);
        gerateneZahl = s4.nextInt();
      } // end of if
      else if (gerateneZahl > zahl) {
        System.out.println("Zu groß!");
        Scanner s5 = new Scanner(System.in);
        gerateneZahl = s5.nextInt();
      } // end of if-else
while(gerateneZahl!=zahl){
if (gerateneZahl < zahl) {
        System.out.println("Zu klein!");
        Scanner s4 = new Scanner(System.in);
        gerateneZahl = s4.nextInt();
      } // end of if
      else if (gerateneZahl > zahl) {
        System.out.println("Zu groß!");
        Scanner s5 = new Scanner(System.in);
        gerateneZahl = s5.nextInt();
      } // end of if-else
}
PS: sorry, weiß nicht, wie man den Code hier richtig posted ^^
statt (zahl < kleinsteZahl)&&(zahl > groessteZahl)
solltest du (zahl < kleinsteZahl)||(zahl > groessteZahl) nehmen 😀
 
Zuletzt bearbeitet von einem Moderator:
Danke es klappt!
statt (zahl < kleinsteZahl)&&(zahl > groessteZahl)
solltest du (zahl < kleinsteZahl)||(zahl > groessteZahl) nehmen 😀
Daran lag es! 😀

zur letzten Frage:
while(gerateneZahl!=zahl){
if (gerateneZahl < zahl) {
System.out.println("Zu klein!");
Scanner s4 = new Scanner(System.in);
gerateneZahl = s4.nextInt();
} // end of if
else if (gerateneZahl > zahl) {
System.out.println("Zu groß!");
Scanner s5 = new Scanner(System.in);
gerateneZahl = s5.nextInt();
} // end of if-else
}
Den Teil davor kann man glaube ich weglassen. 🙂 Aber so funktioniert!

PS: sorry, weiß nicht, wie man den Code hier richtig posted ^^
Oben rechts gibt es die Option "Einfügen", wo man den "Code" auswählen kann. 🙂[/QUOTE]
 

Zurück
Oben