2017-03-08 50 views
-1

首先,對不起,如果我沒有最好的英語,它不是我的第一語言..Java的「猜數」遊戲

所以,這個問題.. Ive得到了鍛鍊,我必須建立一種minigame,在這裏我必須考慮1到1024之間的數字。然後,程序必須詢問用戶是否認爲數字較小,大於或等於數字。但電腦只允許提出10個問題。然而。我不知道,如何做到這一點,我已經在過去幾天做到了。我也沒有在互聯網上找到任何東西。 這裏是我的代碼必須在之前尚未:

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;你定義的變量'a'在哪裏 – victor

+0

你會得到編譯錯誤嗎?你能提供你寫的測試的樣本輸入和輸出嗎? – Freiheit

+0

哦。在我的代碼是它的定義,但我認爲我刪除了它,而我翻譯英文文本:)這是爲1024 – Hunny

回答

0

你可以使用AbstractListCollections或許更容易一點遵循:

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); 
    } 
    } 
} 

試試吧here!

用法示例我選擇猜測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

感謝您的回答,但是當我回答小問題時,我得到一個小問題,如果我更加努力,我得到一個小號碼:) – Hunny

+0

是的抱歉,我從來沒有使用「小腳」這個詞,因爲它在語法上是不正確的,所以我的大腦得到困惑...它現在應該工作... – shash678

+0

它是什麼時候它是正確的? – Hunny