# Programm(Spiel) neustarten



## Joptionpane (13. Nov 2011)

Abend, 


hab eben ein kleines Ratespiel programmiert, wo eine Zufallszahl erzeugt wird aber nicht genannt wird, der  Spieler hat 4 Versuche die Zahl zu erraten, nach jedem Versuch wird angegeben ob die eingegeben Zahl größer oder kleiner als die gesuchte Zahl ist.

Ich will nun, dass nach Ende des Spiels gefragt wird: Noch eine Runde? Tippe 1 für ja und 0 für nein an.

Wie krieg ich es hin, dass das Spiel von vorn anfängt? (mit einer neuen Zahl).
Hoffe jemand kann da helfen. 


LG

```
import java.util.Scanner;

public class Ratespiel3{
	public static void main(String[] args) {
		// Ratespiel

		int a = (int) ((Math.random() * 31) + 10); // Erzeugt zufallszahl
													// zwischen 10 und 40

		for (int i = 1; i <= 4; i++) { // for-schelife = 4 Rateversuche für DAU
			Scanner sc = new Scanner(System.in);
			System.out.println("Wie lautet ihre Zahl?");
			int x = sc.nextInt(); // DAU gibt seine Zahl ein

			if (x < a) {
				System.out.println("Die gesuchte Zahl ist größer als " + x);
			}

			if (x > a) {
				System.out.println("Die gesuchte Zahl ist kleiner als " + x);
			}

			if (x == a) {
				System.out.println("Sie haben gewonnen, die gesuchte Zahl war "
						+ a);
				break; // Falls vorzeitig die gesuchte Zahl erraten wird, wird
						// das Spiel beendet.
			}
		}
		System.out.println("Die Gesuchte zahl war " + a); //Falls DAU nicht auf die Zuffalszahl kommt, wird dieser Satz angegeben.

		// Soll neue Runde gespielt werden?
		Scanner sc = new Scanner(System.in);
		System.out
				.println("Wollen sie nocheinmal spielen? \n Tippen sie \n '1' für JA \n '0' für NEIN");
		int z = sc.nextInt();

		if (z == 0) {
			// Spiel beenden!!!!
		} else {
			// Spiel neustarten!!!!
		}
	}
}
```


----------



## Sunchezz (13. Nov 2011)

pack doch einfach alles in ein "do-while"
am ende des programms fragst du eine eingegebene vriable ab und fütterst damit die while bedingung, und voila, das programm fängt von vorne an!


----------



## Luk10 (13. Nov 2011)

Du packst den ganzen Inhalt von deiner jetztigen main() Methode in eine andere z.B. (wenn du es weiterhin statisch haben willst):


```
public static boolean spielrunde() {
  //Inhalt aus der main()
  if (z == 0) {
    return true;
  } else {
    return false;
  }
}
```


```
public static void main(String[] args) {
  int zaehler = 0;
  while (zaehler < 4) {
    if (spielrunde()) {
      break;
      //ende
    }
    else {
      zaehler++;
    }
}
```

EDIT: Ausversehen zu früh abgeschickt!


----------



## Joptionpane (13. Nov 2011)

Sunchezz hat gesagt.:


> pack doch einfach alles in ein "do-while"
> am ende des programms fragst du eine eingegebene vriable ab und fütterst damit die while bedingung, und voila, das programm fängt von vorne an!




hi und danke schonmal, habs jetzt mal probiert (hatte zuvor noch nie eine do-while gebraucht bzw verwendet) ,  vom Anblick sehe ich selbst sofort das es nicht ganz stimmt, nur  kann ich ja den Scanner vom  z ja nicht in die Do-Schleife setzten, dadurch kommt nur 1x ganz am Anfang die frage nach einem neuen Spiel  und egal was man da angibt es spielt immer und immer wieder.
noch i.ein tip?  

mein code nun:


```
import java.util.Scanner;

public class Ratespiel3{
	public static void main(String[] args) {
		// Ratespiel

		Scanner sc = new Scanner(System.in);
		System.out.println("Wollen sie nocheinmal spielen? \n Tippen sie \n '1' für JA \n '0' für NEIN");
		int z = sc.nextInt();

		do {

			int a = (int) ((Math.random() * 31) + 10); 

			for (int i = 1; i <= 4; i++) { 

				Scanner sc1 = new Scanner(System.in);
				System.out.println("Wie lautet ihre Zahl?");
				int x = sc1.nextInt(); 

				if (x < a) {
					System.out.println("Die gesuchte Zahl ist größer als " + x);
				}

				if (x > a) {
					System.out.println("Die gesuchte Zahl ist kleiner als " + x);
				}

				if (x == a) {
					System.out
							.println("Sie haben gewonnen, die gesuchte Zahl war "
									+ a);
					break; 
				}
			}

			System.out.println("Die Gesuchte zahl war " + a); 

		}

		while (z != 0);

	}
}
```


----------



## Gast2 (13. Nov 2011)

```
System.out.println("Wollen sie nocheinmal spielen? \n Tippen sie \n '1' für JA \n '0' für NEIN");
        int z = sc.nextInt();
```
Das muss natürlich in die while schleife. Und zwar hinter 
	
	
	
	





```
System.out.println("Die Gesuchte zahl war " + a);
```
 Das z musst du dann vor der Schleife deklarieren.


----------



## Joptionpane (13. Nov 2011)

EikeB hat gesagt.:


> ```
> System.out.println("Wollen sie nocheinmal spielen? \n Tippen sie \n '1' für JA \n '0' für NEIN");
> int z = sc.nextInt();
> ```
> ...



Danke für den tipp.
Läuft einwandfrei. 


EDIT:

Leider doch nicht  
Die Abfrage funktioniert einwandfrei, jedoch wird keine neue Zahl erzeugt wenn ich eine neue Runde spielen will...



```
import java.util.Scanner;

public class Ratespiel3{
	public static void main(String[] args) {
		// Ratespiel

		int z;
		do {

			int a = (int) ((Math.random() * 31) + 10);

			for (int i = 1; i <= 4; i++) {

				Scanner sc1 = new Scanner(System.in);
				System.out.println("Wie lautet ihre Zahl?");
				int x = sc1.nextInt();

				if (x < a) {
					System.out.println("Die gesuchte Zahl ist größer als " + x);
				}

				if (x > a) {
					System.out.println("Die gesuchte Zahl ist kleiner als " + x);
				}

				if (x == a) {
					System.out.println("Sie haben gewonnen, die gesuchte Zahl war "	+ a);
					break;
				}
			}
			System.out.println("Die Gesuchte zahl war " + a);

			Scanner sc = new Scanner(System.in);

			System.out.println("Wollen sie nocheinmal spielen? \nTippen sie \n '1' für JA \n '0' für NEIN");
			z = sc.nextInt();
		}

		while (z != 0);

	}
}
```


----------



## Sunchezz (13. Nov 2011)

also bei mir funktioniert es^^


----------



## Gast2 (13. Nov 2011)

Meinst du a? Doch, die wird jedes mal neu erzeugt.


----------



## Joptionpane (14. Nov 2011)

hmmmm ok jetzt gehts 


komischer Zufall.
Hatte 8 Runden oder 9 Laufen lassen, war jedes mal die gleiche Zahl.
Eben jetzt waren es verschiedene  
naja hat sich erledigt, danke!!


----------

