Вывести наименьший балл в игре на угадывание

#java

#java

Вопрос:

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

public class GuessingGame {
    public static void main(String[] args) {
        int target;
        int guess;
        Random randomGenerator = new Random();
        Scanner keyboard = new Scanner(System.in);
        int game = 0;
        int score = 1;
        String answer;
        do {
            target = randomGenerator.nextInt(100);
            System.out.print("Guess a number between 1 and 100: ");
            guess = keyboard.nextInt();
            while (guess != target) {
                if (target < guess)
                    System.out.println("The number is lower, Try again");
                else
                    System.out.println("The number is higher, Try again");
                System.out.print("Guess a number between 1 and 100: ");
                guess = keyboard.nextInt();
                score  ;
            }
            System.out.println("You guessed correctly!!");
            System.out.println("Your score is "   score);
            System.out.print("Play another game, yes(or no):");
            answer = keyboard.next();
            game  ;
            score = 1;
        } while (answer.equalsIgnoreCase("yes"));
        // end of game information
        System.out.println("Game summary");
        System.out.print("tNumber of games played:t"   game);
        System.out.println("tbest score"   score);
    }
}
  

Я учусь использовать класс Random, создавая игру в угадайку, которая генерирует число от 1 до 100. Каждый раз, когда пользователь делает предположение, оценка увеличивается. Я не уверен, как я могу напечатать наименьший балл. Программа суммирует общее количество баллов из обеих игр вместо вывода наименьшего балла.

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

1. Покажите какой-нибудь код.

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

Ответ №1:

Прежде чем вы сможете распечатать его, вам нужно его вычислить.

Необходимы две вещи: 1. Оценка за каждую игру 2. Самый низкий балл на данный момент

Для того, чтобы ваша переменная ‘score’ вычисляла счет за текущую игру, ее необходимо сбрасывать на 1 для каждой игры. Таким образом, score = 1 сразу после do { где начинается новая игра.

И для того, чтобы отслеживать наименьший, вам нужно объявить int lowestScore = 999999999 (объяснено позже) и после каждой игры (сразу после завершения цикла guess != target ) вы пишете if (score < lowestScore) lowestScore = score .

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

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

1. Лучше использовать хорошо известную и устоявшуюся константу, такую как Integer. MAX_VALUE чем составлять собственное определение того, что такое очень большое значение

2. Я предполагал, что кто-то скажет это, но в простых случаях, подобных этому, я предпочитаю sentinel, который визуально очевиден и который не имеет практических недостатков. Имейте в виду, что мы здесь на «начальном уровне». Тем не менее, OP может быть судьей.