2017-03-08 6 views
-1

Erste, sorry, wenn ich das beste Englisch nicht haben, es ist nicht meine erste Sprache ..Java „Erraten Nummer“ Spiel

auf das Problem also .. Ive eine Übung bekam, dass ich ein develope müssen Minigame, in dem ich für eine Zahl zwischen 1 und 1024 denken muss. Das Programm muss dann fragen, ob eine Zahl kleiner, größer oder gleich der Zahl ist, an die der Benutzer denkt. Aber der Computer darf nur 10 Fragen stellen. Jedoch. Ich weiß nicht, wie ich das machen soll und ich habe es schon seit ein paar Tagen getan. Ich habe im Internet auch nichts dafür gefunden. Hier ist der Code, den ich habe, bis noch:

package numberguessing; 

import java.util.Scanner; 

public class Numberguessing { 

    public static void main(String[] args) { 


     int av = 0; 
     int rz; 
     System.out.println("Please think for a number between 1 and 1024"); 

     // 1 2 3 4 5 6  7  8  9  10 
     // 2 4 8 16 32 64 128 256 512 1024 


     System.out.println("I will know your number after max 10 questions"); 
     System.out.println("I will name you a number"); 
     System.out.println("You have to say, if the number is littler, greater than or equal to your number"); 

     rz = a/2 ; 
     System.out.println("Is your number littler, greater than or equal to " + rz +"?"); 

     Scanner sc = new Scanner(System.in); 
     String an = sc.next(); 


     do{ 
      av++; 
      if(an.equalsIgnoreCase("littler")) { 
       rz = rz/2 ; 
       System.out.println("Is your number littler, greater than or equal to " + rz +"?"); 
       an = sc.next(); 
      } else if(an.equalsIgnoreCase("greater")){ 
       rz = (rz + 1024)/2 ; 
       System.out.println("Is your number littler, greater than or equal to " + rz +"?"); 
       an = sc.next(); 
      } else if(an.equalsIgnoreCase("equal")) { 
      } else { 
       System.out.println("Error: The answer wasnt littler, greater or equal"); 
     }} while(!an.equalsIgnoreCase("equal")); 


     System.out.println("I won the game after " + av + " tries"); 


     sc.close(); 
} 
} 
+0

rz = a/2; wo ist Ihre Variable 'a' definiert – victor

+0

Erhalten Sie Kompilierungsfehler? Können Sie Beispieleingabe und -ausgabe der von Ihnen geschriebenen Tests bereitstellen? – Freiheit

+0

oh. In meinem Code ist es definiert, aber ich denke, ich löschte es, während ich den Text in Englisch übersetzte :) Das a ist für 1024 – Hunny

Antwort

0

Sie AbstractList und Collections vielleicht nutzen könnte, um es ein wenig leichter zu folgen:

import java.util.AbstractList; 
import java.util.Collections; 
import java.util.Scanner; 

public class Numberguessing { 
    public static void main(String[] args) { 
    System.out.println("Please think for a number between 1 and 1024 inclusive"); 
    System.out.println("I will know your number after max 10 questions!"); 
    System.out.println("I will guess your number!"); 
    System.out.println("After each guess, respond with littler, greater, or equal depending on my guess."); 
    int result = Collections.binarySearch(new AbstractList<Integer>() { 
     private final Scanner in = new Scanner(System.in); 
     public int size() { return 1025; } 
     public Integer get(int i) { 
     System.out.printf("My guess is: %d. Is it littler, greater, or equal? ", 0 + i); 
     String s = in.nextLine(); 
     assert s.length() > 0; 
     switch (s.toLowerCase()) { 
      case "greater": 
      return -1; 
      case "littler": 
      return 1; 
      case "equal": 
      return 0; 
     } 
     return -1; 
     } 
    }, 0); 

    if (result < 0) { 
     System.out.println("That is impossible."); 
    } else { 
     System.out.printf("Your number is %d.\n", result); 
    } 
    } 
} 

Ausprobieren here!

Beispiel zur Nutzung wo ich rate 513:

Please think for a number between 1 and 1024 inclusive 
I will know your number after max 10 questions! 
I will guess your number! 
After each guess, respond with littler, greater, or equal depending on my guess. 
My guess is: 512. Is it littler, greater, or equal? greater 
My guess is: 768. Is it littler, greater, or equal? Littler 
My guess is: 640. Is it littler, greater, or equal? littler 
My guess is: 576. Is it littler, greater, or equal? littler 
My guess is: 544. Is it littler, greater, or equal? littler 
My guess is: 528. Is it littler, greater, or equal? littler 
My guess is: 520. Is it littler, greater, or equal? littler 
My guess is: 516. Is it littler, greater, or equal? littler 
My guess is: 514. Is it littler, greater, or equal? littler 
My guess is: 513. Is it littler, greater, or equal? EQUAL 
Your number is 513. 
+0

Danke für deine Antwort, aber wenn ich littler antworte, bekomme ich eine kleinere Frage, wenn ich größer bin, bekomme ich eine kleinere Nummer :) – Hunny

+0

Ja sorry, ich benutze nie das Wort "littler", da es grammatikalisch inkorrekt ist verwirrt ... sollte es jetzt funktionieren ... – shash678

+0

Was wäre es wenn es grammatisch korrekt wäre? – Hunny