мне нужно получить общее количество догадок, а также общее количество игр, сыгранных для игры в угадайку

#java

#java

Вопрос:

итак, это мое первое кодирование, и мне нужна большая помощь, пытаясь выяснить, чтобы получить общее количество догадок и общее количество сыгранных игр, я даже не знаю, с чего начать. Я могу получить код, который скажет мне, сколько догадок потребовалось, чтобы получить число в одной игре, но не общий результат. Какие-либо советы или помощь?

Спасибо

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

public class treehouseproject {

   //Instruction on how to play the game
   public static void instruction() {
      System.out.println("this is a guessing game");
      System.out.println("you will guess the number");
      System.out.println("that i am thinking of");
      System.out.println("unitl you guess the correct number");
      System.out.println("the number ranges from 0 to 100");
   
   }


   //playing a single game
   public static void playgame() {
      int guessNumber = 0;
      int numberGuesses = 0;
      int plays = 0;
      int max = 100;
      int min = 0;
      Random randomNum = new Random();
      int givenNumber = min   randomNum.nextInt(max);
      
      Scanner scan = new Scanner (System.in);
      
      while(guessNumber != givenNumber){
         numberGuesses  ;
         System.out.println("Guess: "   numberGuesses);
         guessNumber = scan.nextInt();
         if (guessNumber == givenNumber) {
            System.out.println("correct");
            System.out.println("you go it right in "   numberGuesses   " guesses");
         }
      
         if (guessNumber < givenNumber) {
            System.out.println("higher");
         }
         if (guessNumber > givenNumber){
            System.out.println("lower");
         }
      
      
      }
   }
   
   
   



   //playing muliple games and reporting all end stats

   public static void main(String[] args) {
      String Answer = "";
      instruction();
      playgame();
      Scanner console = new Scanner(System.in);
      System.out.println("do you want to play again?");
      Answer = console.nextLine();
      boolean keep_playing = true;
      while (Answer.equalsIgnoreCase("yes")){
         playgame();
         System.out.println("do you want to play again?");
         Answer = console.nextLine();
      }
          
         
          
          
   }



//prints out the stats of the game

public static void results(int plays, int numberGuesses) {
   System.out.println("Overall results");
   System.out.println("Total amount of guesses = "   numberGuesses);
   System.out.println("Total amount of games = "   plays);
  
   }

         
}
  

Комментарии:

1. Возможно, сбросьте счетчик после окончания каждой игры?

Ответ №1:

проблема, с которой вы столкнулись, на самом деле имеет довольно простое решение. Итак, если вы определяете переменную как определенный «срок службы», это означает, что в какой-то момент она фактически умирает. Каждая переменная является «живой» только внутри родительских элементов своего родителя. Пример:

 public static void main(string args[]){
    String s1 = "";
    private static void doSomething(){
         String s2 = s1;
    } 
}
  

Переменная s1 является «живой» до тех пор, пока скобки ее родительского (основного) не закроются, поэтому она также активна в функции и полностью пригодна для использования.
s2, с другой стороны, активен только в «doSomething», поэтому на него нельзя ссылаться после закрытия его скобки.
Поэтому перемещение инициализации переменных на более «глобальный» уровень часто бывает очень полезным.

Вам нужно переместить инициализацию этих переменных за пределы PlayGame() и на глобальный уровень.

  • Количество догадок
  • Спектакли