# Zahl raten



## Zulfiqar (4. Okt 2015)

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:

```
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?


----------



## CorperateRaider (4. Okt 2015)

zur letzten Frage:

```
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


----------



## Zulfiqar (4. Okt 2015)

Danke es klappt!


CorperateRaider hat gesagt.:


> statt (zahl < kleinsteZahl)&&(zahl > groessteZahl)
> solltest du (zahl < kleinsteZahl)||(zahl > groessteZahl) nehmen


Daran lag es! 



CorperateRaider hat gesagt.:


> zur letzten Frage:
> while(gerateneZahl!=zahl){
> if (gerateneZahl < zahl) {
> System.out.println("Zu klein!");
> ...


Den Teil davor kann man glaube ich weglassen.  Aber so funktioniert!



CorperateRaider hat gesagt.:


> 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]


----------

