2017-06-07 25 views
1

顯然我的代碼沒有按照自動化測試工作,也沒有爲我的解決方案提供通行證,但是當我運行它時,它似乎工作正常。我不知道什麼是錯我的代碼?:猜謎遊戲不能正常工作

import java.util.Random; 
import java.util.Scanner; 

public class GuessingNumberGame { 

    public static void main(String[] args) { 
     Scanner reader = new Scanner(System.in); 
     int numberDrawn = drawNumber(); 

     int i = 1; 
     boolean correct = false; 

     while (correct == false) { 

     System.out.print("Guess a number: "); 
     int guess = Integer.parseInt(reader.nextLine()); 

     if (guess == numberDrawn) { 
      System.out.println("Congratulations, your guess is correct!"); 
      correct = true; 

     } else if (guess < numberDrawn) { 
        System.out.println("The number is lesser, guesses made: " + i); 
           i++; 
        } else if (guess > numberDrawn) { 
         System.out.println("The number is greater, guess made: " + i); 
            i++; 
     } 
     } 
    } 

    // DO NOT MODIFY THIS! 
    private static int drawNumber() { 
     return new Random().nextInt(101); 
    } 
} 

它是在赫爾辛基在線的Java課程的大學運動41,演習的細節在這裏:http://mooc.cs.helsinki.fi/programming-part1/material-2013/week-2?noredirect=1#e41

,我得到的錯誤是:

  • 如果猜測太小,程序應打印「數字越大」。
  • 如果猜測太大,程序應打印「數量較少」。
  • 如果繪製的數字是1並且用戶輸入是0,1,程序應該首先打印 「數字更大」,然後「恭喜,您的猜測是正確的!」
  • 如果繪製的數字是1並且用戶輸入是2,1,程序應該首先打印 「數字更小」,然後「祝賀,您的猜測是正確的!」

謝謝

+0

它看起來像你有你的'<' and '>'翻轉。 (如果'guess

+0

作爲一種風格提示,你可以簡單地寫'while(!correct){...} 。 '!'會否定'correct'的布爾值 –

+0

您還打印了迄今爲止已經進行的猜測次數,但根據您的錯誤要點,這些不應該在那裏,或者我誤解了這一點? –

回答

2

你有簡單的邏輯錯誤

當數較小的條件應該是guess > numberDrawn或數大於它應該是guess < numberDrawn

if (guess == numberDrawn) { 
     System.out.println("Congratulations, your guess is correct!"); 
     correct = true; 
    } else if (guess > numberDrawn) { 
       System.out.println("The number is lesser, guesses made: " + i);   
       i++; 
    } else if (guess < numberDrawn) { 
       System.out.println("The number is greater, guess made: " + i);   
       i++; 
    }