Zahlenraten

Status
Nicht offen für weitere Antworten.

Svenja

Mitglied
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:

Code:
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

Top Contributor
Code:
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

Mitglied
ja dieses Zahlerzeugen soll ich ja mit:

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

Der Müde Joe

Top Contributor
Code:
       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

Mitglied
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


Code:
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

Top Contributor
Code:
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

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

Der Müde Joe

Top Contributor
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

Mitglied
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

Top Contributor
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

Mitglied
hab ich geändert aber den interessier mein eingegebenes N gar nciht:
Code:
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

Top Contributor
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);
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben