#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() и на глобальный уровень.
- Количество догадок
- Спектакли