# Zahlenraten



## Svenja (11. Nov 2007)

So also ich soll ein Programm schreiben, dass Zahlenraten heißt.
Der Pc denkt sich eine Zahl aus und über die KOnsole geb ich dann Zahlen ein um diese zu erraten.
am Anfang werd ich gefragt in welchem Berreich die Zufallzahl liegen soll ( 0 bis N) 

mit einer Hilfsmethode String s = GdAInput.readLine () kann ich zwischen durch die Zahlen eingeben

Mein Programm sieht bis jetzt so aus:


```
public class Zahlenraten 
 { 
  public static void main (String args[]) 
  { 
    System.out.println("*** Zahlenraten **"); 
    System.out.println("\nWillkommen beim Zahlenraten!"); 
	System.out.println("Ich denke mir eine Zahl zwischen 1 und N. Welchen wer hat N?");
	String s= GdAInput.readLine ();
	int N= new Integer(args[0]).intValue();
	int geheimZahl = (int)(Math.random()*(N+1)); 
	if (args.length!=1){
		System.out.println("Fehler: Bitte geben sie genau eine Zahl ein!");	
	}
    System.out.println("\nRate diese Zahl :)"); 
    System.out.println(); 
          
    
    
    int rateZahl = 0; 
    int rateVersuche = 0; 
	        
    while (rateZahl != geheimZahl) 
    { 
      rateVersuche++; 
      System.out.print(rateVersuche + ". Versuch: "); 
      
      if (rateZahl > geheimZahl) 
      { 
        System.out.println("Meine Zahl ist kleiner!\n"); 
      } 
      
      if (rateZahl < geheimZahl) 
      { 
        System.out.println("Meine Zahl ist groesser!\n"); 
      } 
      
      if (rateZahl == geheimZahl) 
      { 
        System.out.print("\nDas ist die gesuchte Zahl! \nDu hast " + rateVersuche); 
        System.out.print(" Versuch(e) benoetigt um die Zahl zu erraten!"); 
      } 
    } 
  } 
}
```

Nur leider funktionierts net so wies funktionieren soll.
Ich muss dem ja noch irgendwie sagen, dass seine Zahlen zwischen o und N liegen soll,.. aber ich weiß nciht wie......
Bitte helft mir!!


----------



## Der Müde Joe (11. Nov 2007)

```
Random r = new Random();
int randomInt = r.nextInt(max);
```

 Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive), drawn from this random number generator's sequence.


----------



## Svenja (11. Nov 2007)

wie bitte???


----------



## Der Müde Joe (11. Nov 2007)

http://java.sun.com/javase/6/docs/api/java/util/Random.html


```
Random r = new Random();
```

Random Generator erzeugen


```
int i = r.nextInt(max);
```

Zahl erzeugen zwischen 0 (mit) und max (ohne)


----------



## Svenja (11. Nov 2007)

ja dieses Zahlerzeugen soll ich ja mit:


```
int zufall= (int) (Math.random ()*(N+1));
```
 machen


----------



## Der Müde Joe (11. Nov 2007)

```
Scanner scanner = new Scanner(System.in);
       String s = scanner.nextLine();
```

mit dem Scanner zb

EDIT:
was ist dein Problem genau??
GdAInput kenn ich net??


----------



## Svenja (11. Nov 2007)

so jetzt hab ich des Programm mal nen bis umgeschriebn, jetzt hab ich noch zwei Probeleme

1. der nimmt Zahlen bis unendlich und nciht bis N

2. ich kann keine Eingabe machen, welche Zahl ich rate



```
public class Zahlenraten 
{ 
  public static void main (String args[]) 
  { 
    System.out.println("*** Zahlenraten **"); 
    System.out.println("\nWillkommen beim Zahlenraten!"); 
	System.out.println("Ich denke mir eine Zahl zwischen 1 und N. Welchen wer hat N?");
	String s= GdAInput.readLine ();
	double zufall= java.lang.Math.random();
	int geheimZahl = (int)(zufall * 100);
	if (args.length!=1){
		System.out.println("Fehler: Bitte geben sie genau eine Zahl ein!");	
	}
    System.out.println("\nRate diese Zahl :)"); 
    System.out.println(); 
            
    int rateZahl = 0; 
    int rateVersuche = 0; 
	        
    while (rateZahl != geheimZahl) 
    { 
      rateVersuche++; 
      System.out.print(rateVersuche + ". Versuch: "); 
      
      if (rateZahl > geheimZahl) 
      { 
        System.out.println("Meine Zahl ist kleiner!\n"); 
      } 
      
      if (rateZahl < geheimZahl) 
      { 
        System.out.println("Meine Zahl ist groesser!\n"); 
      } 
      
      if (rateZahl == geheimZahl) 
      { 
        System.out.print("\nDas ist die gesuchte Zahl! \nDu hast " + rateVersuche); 
        System.out.print(" Versuch(e) benoetigt um die Zahl zu erraten!"); 
      } 
    } 
  } 
}
```


----------



## Der Müde Joe (11. Nov 2007)

```
import java.util.Scanner;


public class Zahlenraten
    
      public static void main (String args[])
      {
        System.out.println("*** Zahlenraten **");
        System.out.println("\nWillkommen beim Zahlenraten!");
       System.out.println("Ich denke mir eine Zahl zwischen 1 und N. Welchen wer hat N?");
       
       Scanner scanner = new Scanner(System.in);
       String s = scanner.nextLine();
       
       int N= new Integer(s).intValue();
       int geheimZahl = (int)(Math.random()*(N+1));

        System.out.println("\nRate diese Zahl :)");
        System.out.println();
             
       
       
        int rateVersuche = 0;
        int rateZahl = -1;

              
        while (rateZahl != geheimZahl) {
            String rate = scanner.nextLine();
            
            rateZahl = Integer.valueOf(rate);
            
          rateVersuche++;
          System.out.print(rateVersuche + ". Versuch: ");
         
          if (rateZahl > geheimZahl)
          {
            System.out.println("Meine Zahl ist kleiner!\n");
          }
         
          if (rateZahl < geheimZahl)
          {
            System.out.println("Meine Zahl ist groesser!\n");
          }
         
          if (rateZahl == geheimZahl)
          {
            System.out.print("\nDas ist die gesuchte Zahl! \nDu hast " + rateVersuche);
            System.out.print(" Versuch(e) benoetigt um die Zahl zu erraten!");
          }
        }
      }
    
}
```

so ca...ohne garantie

EDIT:
Code..ups..ein wenig zuviel kopiert

und noch ein paar Fehler gekillt


----------



## Svenja (11. Nov 2007)

kann ich denn den Scanner auch mit String s = GdAInput.readLine ( )  ersetzten ( die ist mir nämlich gegeben!!!)


----------



## Der Müde Joe (11. Nov 2007)

Svenja hat gesagt.:
			
		

> kann ich denn den Scanner auch mit String s = GdAInput.readLine ( )  ersetzten ( die ist mir nämlich gegeben!!!)



da muss ich meine Glasskugel befragen....???

die Klasse ist wohl vom Tutor Prof oder so..kenn ich nicht.


----------



## Svenja (11. Nov 2007)

ok also mein String s = ....
funktioniert.

aber der rafft nicht, dass er eine Zahl zwischen 0 und N wählen soll!!
wie kann ich ihm das denn deutlich machen??


----------



## Der Müde Joe (11. Nov 2007)

int N= new Integer(s).intValue(); 

und nicht

int N= new Integer(args[0]).intValue(); 

args ist das was von der Kommandozeile her kommt

und readLine das, was eingelesen wird


----------



## Svenja (11. Nov 2007)

hab ich geändert aber den interessier mein eingegebenes N gar nciht:

```
public class Zahlenraten 
{ 
  public static void main (String args[]) 
  { 
    System.out.println("*** Zahlenraten **"); 
    System.out.println("\nWillkommen beim Zahlenraten!"); 
	System.out.println("Ich denke mir eine Zahl zwischen 1 und N. Welchen wer hat N?");
	String s= GdAInput.readLine ();
	
	int N= new Integer(s).intValue(); 
       int geheimZahl = (int)(Math.random()*(N+1)); 
	
    System.out.println("\nRate diese Zahl :)"); 
    System.out.println(); 
            
    int rateZahl = 0; 
    int rateVersuche = 0; 
	        
    while (rateZahl != geheimZahl) {
		String rate= GdAInput.readLine();
	
   
      rateVersuche++; 
      System.out.print(rateVersuche + ". Versuch: "); 
      
      if (rateZahl > geheimZahl) 
      { 
        System.out.println("Meine Zahl ist kleiner!\n"); 
      } 
      
      if (rateZahl < geheimZahl) 
      { 
        System.out.println("Meine Zahl ist groesser!\n"); 
      } 
      
      if (rateZahl == geheimZahl) 
      { 
        System.out.print("\nDas ist die gesuchte Zahl! \nDu hast " + rateVersuche); 
        System.out.print(" Versuch(e) benoetigt um die Zahl zu erraten!"); 
      } 
    } 
  } 
}
```


----------



## Der Müde Joe (11. Nov 2007)

da ich GdaInput oder so nicht kenne..kann ich nix machen.

benutz einen Debugger oder mach halt 
System.out.println(s);

dann siehst du wenigstens ob er auch was einliest

EDIT:
ach und:
int N= Integer.valueOf(s);


----------

