2013-03-05 3 views
1

응용 프로그램에 숫자 추측 게임이 있습니다. 사용자는 0에서 100 사이의 숫자를 추측해야합니다. 사용자가 게임을 끝낼 때 다시 게임을하고 싶다면 프로그램에서 질문을합니다. 게임 및 게임에서 가장 많은 수의 추측. 지금 내가 얻는 것은 "Math.min (,)"을 사용할 때의 모든 추측의 합입니다. 어떻게 작동하는 최소 기능을 얻습니까? 기능 코드는 아래에 더 있습니다.최소 및 최대 기능에 대한 도움이 필요하십니까?

  1. leastNumGuesses = Math.min (leastNumGuesses, 추측);

    double rightNum = Math.random() *100; 
    int randomNum = (int) rightNum; //convert the random number to int 
    int tries = 0; //single game gussess output 
    int numberOfGames = 0; 
    int allTries = 0; //accumalates all tries(sum of all tries) 
    int guesses = 0; // guesses of all games combined 
    int gameGuesses = 0; 
    int leastNumGuesses = 100; 
    int mostNumGuesses = 0; 
    
    
        while (choice.equalsIgnoreCase("y")) 
    

    는 {

    System.out.println(); 
    
        int guess = getIntWithinRange(sc,"Enter the Number: ", 0, 100); 
        tries++; 
        guesses++; 
        gameGuesses++; 
    
        if (guess == randomNum) 
        { 
         numberOfGames++; 
         System.out.println("You got it in " + tries + " tries."); 
         leastNumGuesses = Math.min(leastNumGuesses,gameGuesses); 
         if (tries <=3) 
           System.out.println("Great work! You are a mathematical wizard."); 
         else if (tries > 3 && tries <= 7) 
           System.out.println("Not too bad! You've got some potential."); 
         else if (tries > 7) 
           System.out.println("What took you so long? Maybe you should take some lessons."); 
    
         System.out.println();  
         System.out.println("Would you like to play again (y/n):"); 
         choice = sc.nextLine(); 
    
        while (!choice.equalsIgnoreCase("n") && !choice.equalsIgnoreCase("y")) 
        { 
    
        System.out.println("Error! entry must be \"y\" or \"n\"."); 
        System.out.println("Would you like to play again (y/n):"); 
        choice = sc.nextLine(); 
        } 
    
         if (choice.equalsIgnoreCase("y"))  
         { // reset the random number & tries 
    
          rightNum = Math.random() *100; 
          randomNum = (int) rightNum; 
          tries=0; 
          gameGuesses++; 
         } 
         else if (choice.equalsIgnoreCase("n")) 
         {  
          allTries += guesses; 
          int averageNumGuess = allTries/numberOfGames; 
    
          System.out.println("Bye - Come back again"); 
          System.out.println("Number of Games Played: " + numberOfGames); 
          System.out.println("Average Number of Guesses: " + averageNumGuess); 
          System.out.println("Least Amount of Guesses In a Single Game: " + leastNumGuesses); 
    
         } 
    
        } 
    
+2

최소 코드 스 니핑을 게시하여 1) 문제를 설명하고 2) 컴파일 할 수 있습니까? – apnorton

+0

코드를 컴파일하고 실행할 때 어떻게됩니까? 당신이 원하고 기대하는 것과 어떻게 다른가요? –

+0

@ Code-Guru 각 게임에 대한 모든 추측을 함께 추가하여 단일 게임에서 가장 적은 수의 추측으로 표시합니다. 모든 게임에서 모든 추측을 취하고 게임에서 가장 작은 또는 최소한의 추측을 찾길 바랍니다. – babaysteps

답변

0

당신이 guesses 프로그램의 중간에 방치 원하는 변화하고 있다는 것.

모든 게임 플레이를 통해 guesses이 추측의 번호가 기억하고 leastNumGuesses는 처음 100로 설정되어 있는지. 대부분의 경우 guesses < leastNumGuesses이며 따라서 Math.min(guesses, leastNumGuesses) 함수는 guesses을 반환합니다.

해결 방법 : 이 아닌 변수 (예 : gameGuesses)를 사용하여 게임에서 얼마나 많은 추측이 이루어 졌는지 추적합니다. 그런 다음 Math.min(,)이 예상대로 작동합니다.

+0

나는 그것을 시험해 보았지만 문제는 min 함수가 모든 추측을 함께 추가한다는 것을 의미한다. 아마도 변수를 잘못된 위치에 두는 것일까? 나는 모른다. 그러나 이것은 정말로 나를 괴롭힌다. – babaysteps

+1

@ user1852564는'Math.min (guesses, leastNumGuesses)'줄을 루프 안에 두어 사용자가 "y"또는 "n"중 어떤 대답을 하든지에 관계없이 게임이 끝날 때마다 실행되도록합니다. – apnorton

관련 문제