需要最小和最大功能的帮助?

时间:2013-03-05 02:27:17

标签: java

我有一个应用程序数字猜测游戏,用户必须猜测0到100之间的数字,当他们猜对了,程序询问他们是否想要在完成游戏时再玩一次我显示的最少数量的猜测游戏和游戏中最大数量的猜测。现在,我得到的是使用“Math.min(,)”时所有猜测的总和? 我如何获得最低功能?功能代码在下面。

  1. leastNumGuesses = Math.min(leastNumGuesses,guesses);

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

1 个答案:

答案 0 :(得分:0)

您似乎正在改变您希望guesses在计划中间代表的内容。

请注意,guesses是所有已玩游戏的 猜测次数,leastNumGuesses最初设置为100 }。在大多数情况下,您会发现guesses < leastNumGuesses,因此Math.min(guesses, leastNumGuesses)函数将返回guesses

要修复:使用guesses以外的变量,例如gameGuesses来跟踪游戏中的猜测次数。然后,Math.min(,)将按预期运行。