2016-10-03 43 views
-2

因此對於我的java類,我們必須猜測用戶想要的數字,介於0到1024之間。我們必須在10次猜測中猜出數字。我不能在10次猜中得到奇數,我只能在11次得到它們。這是我到目前爲止:Java猜謎遊戲無法在10次猜測中猜出奇數

import java.util.Scanner;

公共類guessing_game {

public static void main(String[] args) { 
    int high, low, middle; 
    String input; 
    int totalGuesses; 
    high = 1024; 
    low = 0; 
    totalGuesses = 0; 
    String name; 

    System.out.println("What is your name?"); 
     Scanner scan = new Scanner(System.in); 
     name = scan.nextLine(); 

     middle = low + (high - low)/2; 
    System.out.println("Is your number higher than " + middle + ", " + name + "? Please answer 'y' or 'n'. "); 
    System.out.println("If I guess the number, either answer 'that is my number' or answer 'n'."); 
     totalGuesses++; 
     Scanner sca = new Scanner(System.in); 
     input = sca.nextLine(); 

     while (high - low != 1){ 
if (input.equals("y")){ 
      low = middle; 
     middle = low + (high - low)/2; 
    System.out.println("Okay, let's try again."); 
    System.out.println("Is your number higher than " + middle + ", " + name + "? "); 
     input = sca.nextLine(); 
     totalGuesses++;} 
if (input.equals("that is my number")){ 
    System.out.println("Great! Your number is " + middle + ". "); 
    break;} 


else if (input.equals("n")){ 
      high = middle; 
     middle = low + (high - low)/2; 
    System.out.println("Alright, I'll try again."); 
    System.out.println("Is your number higher than " + middle + ", " + name + "? "); 
     input = sca.nextLine(); 
     totalGuesses++;} 
if (high - low == 1){ 
    System.out.println("Number is " + high); 
    break;} 
if (high - low == 2){ 
    System.out.println("Your number is " + high); 
    break;}} 

    System.out.println("This guessing game program used " + totalGuesses + " guesses."); 
    sca.close(); 
    scan.close(); 

    } 

這是對我的代碼教授給了我一個Word文檔的幫助:

進口java.util.Scanner的;

Start of main method 
    integer high,low,middle; 
    String input; 
    integer totalGuesses; 
    high = 1024; 
    low = 0; 
    totalGuesses = 0; 

    start infinite loop 
     middle = low + (high - low)/2 
     print "Is your number higher than " + middle + " ? (y/n)" 
     increment totalGuesses by 1 
     read from keyboard into input 
     if input is 「y」 
      low = middle 
      middle = low + (high - low)/2    
      if (high - low) == 1 
       print "Your number is " + high 
       exit the infinite loop 

     else 
      high = middle 
      middle = low + (high - low)/2 
      if (high - low) == 1 
       print "Your number is " + low 
       exit the infinite loop 



    print "The program used " + totalGuesses + " guesses" 

end of method 

+2

大概的調試器可以幫助你更好。 –

+0

順便說一下,我可能將「無限循環」解釋爲「while(True)」, –

回答

1

middle = low + (high - low)/2;的端將無法正確評估是否high - low是奇數。由於除法發生在整數運算中,結果將是截斷的