Как перезапустить метод в Java? - PullRequest
0 голосов
/ 16 октября 2018

В конце игры я хочу перезапустить метод.Я добавил цикл, но он не будет делать то, что я хочу.Вызов метода main с использованием main(); приводит к ошибке.Как мне перезапустить метод?

public static void main(String[] args)
{
        //A ton of stuff has been emitted here

        randomNumber = randomGenerate.nextInt(1000) + 1;

        System.out.println("Guess a number between 1 and 1000: ");
        guess = inputGenerate.nextInt();

        while(truth) {
            while (randomNumber != guess) {
                if (guess < randomNumber) {
                    System.out.println("Too low! Try higher: ");
                    guess = inputGenerate.nextInt();
                }
                if (guess > randomNumber) {
                    System.out.println("Too high! Try lower: ");
                    guess = inputGenerate.nextInt();
                }
            }

            if (guess == randomNumber) {
                System.out.println("Correct! Nicely done :)");
                System.out.println("Would you like to play again? (yes/no): ");
                answer = inputGenerateString.nextLine();
                if (answer.equals("no")) {
                    System.out.println("Too bad! Thanks for playing though:)");
                    break;
                }
                else if(answer.equals("yes")) {
                    System.out.println("Alright, here we go again!");

                  //Here I want to restart the method

                }
            }

        }
}

Ответы [ 3 ]

0 голосов
/ 16 октября 2018

Вы можете вызвать main, передав ему null в качестве аргумента.не забудьте заранее разорвать цикл и добавить логический флаг, чтобы продолжить игру:

private boolean continueFlag = false;
public static void main(String[] args)
{
    //A ton of stuff has been emitted here

    randomNumber = randomGenerate.nextInt(1000) + 1;

    System.out.println("Guess a number between 1 and 1000: ");
    guess = inputGenerate.nextInt();

    while(truth) {
        while (randomNumber != guess) {
            if (guess < randomNumber) {
                System.out.println("Too low! Try higher: ");
                guess = inputGenerate.nextInt();
            }
            if (guess > randomNumber) {
                System.out.println("Too high! Try lower: ");
                guess = inputGenerate.nextInt();
            }
        }

        if (guess == randomNumber) {
            System.out.println("Correct! Nicely done :)");
            System.out.println("Would you like to play again? (yes/no): ");
            answer = inputGenerateString.nextLine();
            if (answer.equals("no")) {
                System.out.println("Too bad! Thanks for playing though:)");
                continueFlag = false;
                break;
            }
            else if(answer.equals("yes")) {
                System.out.println("Alright, here we go again!");
                continueFlag = true;
                break;
              //Here I want to restart the method

            }
        }

    }

    if (continueFlag == true) {
        main(null);
    }
}

На что следует обратить внимание: убедитесь, что для continueFlag установлено значение false, чтобы завершить игру;)

0 голосов
/ 16 октября 2018

Исходя из вашего кода, я предполагаю, что цикл истинности - это сколько угаданий они получают и просто перемещают цикл while в метод playgame (int randomNumber, int guess);и он содержит цикл while.

Я бы разбил его на три метода: generateRandomNumberMethod (), getUserInput () и playGame.

public static void main(String[] args)

{// Здесь было выброшено множество вещей

    randomNumber = randomGenerate.nextInt(1000) + 1;

    System.out.println("Guess a number between 1 and 1000: ");
    guess = inputGenerate.nextInt();

   playGame(int generateRandomNumberMethod(), int getUserInput(), int numberOfGuess){
       while( i<=numberOfGuess){

         while (randomNumber != guess) {
            if (guess < randomNumber) {
                System.out.println("Too low! Try higher: ");
                guess = inputGenerate.nextInt();
            }
            if (guess > randomNumber) {
                System.out.println("Too high! Try lower: ");
                guess = inputGenerate.nextInt();
            }
        }

        if (guess == randomNumber) {
            System.out.println("Correct! Nicely done :)");
            System.out.println("Would you like to play again? (yes/no): ");
            answer = inputGenerateString.nextLine();
            if (answer.equals("no")) {
                System.out.println("Too bad! Thanks for playing though:)");
                break;
            }
            else if(answer.equals("yes")) {
                System.out.println("Alright, here we go again!");

              playGame(new generateRandomNumberMethod(), getUserInput(), int numberofGuess)

            }
         i++
        }
      }
    }

}

0 голосов
/ 16 октября 2018

У вас уже есть бесконечный цикл, за исключением того, что он должен быть while(true), а не while(truth).Вы можете просто восстановить свое случайное число и спросить пользователя об его предположении, и позволить циклу позаботиться о повторении запроса для пользовательского ввода, например:

while(true) {
    while (randomNumber != guess) {
        ... omitted for brevity ...
    }

    if (guess == randomNumber) {

        ... omitted for brevity ...
        if (answer.equals("no")) {
            System.out.println("Too bad! Thanks for playing though:)");
            break;
        }
        else if(answer.equals("yes")) {
            System.out.println("Alright, here we go again!");         
            randomNumber = randomGenerate.nextInt(1000) + 1;
            System.out.println("Guess a number between 1 and 1000: ");
            guess = inputGenerate.nextInt();
        }
    }
}

Если вам нужно также испустить все вещи из ранее, Я бы порекомендовал обернуть его в вызов функции, чтобы его можно было использовать повторно.

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