Ограниченное количество возможных вариантов? - PullRequest
2 голосов
/ 21 сентября 2019

Java новичок здесь.

Есть этот код (из учебника), и мне было интересно, какой цикл или другой метод я должен использовать, чтобы ограничить выбор максимального предположения, например, до 3?Я имею в виду, что пользователь может угадывать только ограниченное количество раз, и после этого программа просто останавливается.

package com.company;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        int secretNum;
        int guess;
        boolean correct = false;

        Scanner keybord = new Scanner(System.in);
        System.out.print("GIVE ME SECRET NUMBER");
        secretNum = keybord.nextInt();

        while (!correct){
            System.out.println("GUESS: ");
            guess = keybord.nextInt();

            if (guess == secretNum){
                correct = true;
                System.out.println("YOU ARE RIGHT");
            }
            else if (guess < secretNum){
                System.out.println("HIGHER");
            }
            else if (guess > secretNum) System.out.println("LOWER");
        }
    }
}

Ответы [ 3 ]

1 голос
/ 21 сентября 2019

Это очень легко сделать с вашей чистой структурой кода.Объявите переменную вне вашего цикла, которая будет хранить количество попыток.Затем в вашем цикле проверьте количество попыток и в теле увеличьте значение этой переменной.

// Add
int attempts = 0;

// Update condition
while (!correct || attempts <= 3) {

    // Update variable at the end of the loop
    attempts++;
}
1 голос
/ 21 сентября 2019

Для этого лучше всего подходит цикл do-while.Гарантируется, что он будет выполнен хотя бы один раз, проверяет условие цикла в конце цикла, а не в начале, и легко выйти из любого цикла, если у вас есть такое условие прерывания.

int guesses = 0;
final maxGuesses = 3;
final secretNum = ...

do {
    System.out.println("GUESS: ");
        guess = keybord.nextInt();

        if (guess == secretNum){
            System.out.println("YOU ARE RIGHT");
            break; // no need for 'correct' value, just break out of the loop
        }
        else if (guess < secretNum){
            System.out.println("HIGHER");
        }
        else if (guess > secretNum) System.out.println("LOWER");
}while (guesses++ < maxGuesses)

Цикл for также будет работать.Здесь догадки проверяются перед началом цикла и увеличиваются в конце.

for(int guesses = 0; guesses < maxGuesses; guesses++){
    System.out.println("GUESS: ");
     guess = keybord.nextInt();

     if (guess == secretNum){
         System.out.println("YOU ARE RIGHT");
         break;// no need for 'correct' value, just break out of the loop
     }
     else if (guess < secretNum){
         System.out.println("HIGHER");
     }
     else if (guess > secretNum) System.out.println("LOWER");
}
1 голос
/ 21 сентября 2019

Вы можете отслеживать количество попыток с помощью счетчика, например:

public static void main(String[] args) {
    int attempts = 0;
    Scanner keybord = new Scanner(System.in);
    System.out.print("GIVE ME SECRET NUMBER");
    int secretNum = keybord.nextInt();

    while (true){
        System.out.println("GUESS: ");
        int guess = keybord.nextInt();
        attempts++;

        if (guess == secretNum){
            System.out.println("YOU ARE RIGHT");
            break;
        }
        if (attempts == 3) {
            System.out.println("Max attempts!");
            break;
        }
        else if (guess < secretNum){
            System.out.println("HIGHER");
        }
        else if (guess > secretNum) System.out.println("LOWER");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...