简体   繁体   中英

Guessing game loop

Here is the code for a guessing game I have made. My counter in not increasing past 1. I am passing the parameters choice and generatedNumber from a seperate controller class. Should the do while loop be in the controller class?

            public String startGuessingGame(int choice, int generatedNumber) {

        int count = 0;
        final int attempts = 4;
        String result = null;

            do {

                count++;

                if (choice == generatedNumber) {

                    result = "Attempt " + count + " "
                            + "- You have guessed the correct number!";

                }

                else if (choice > 50 || choice < 0) {

                    result = "Out of range. "
                            + "\nPlease choose a number between 1 and 50."; 

                }

                else if (choice > generatedNumber) {

                    result = "Attempt " + count + " " 
                            + " - You have guessed too high!";

                }

                else if (choice < generatedNumber) {

                    result = "Attempt " + count + " " 
                            + "- You have guessed too low!";

                }


                if (count == attempts) {

                    result = "You are out of guesses! The number was " + generatedNumber;

                }
            }

        while(count < attempts);

            return result;

    }
}

There is no loop here. You're looking for something like while(count < attempts) .

You need to make count a class variable (member) of your controller class and have your do/while loop in that class so that the startGuessingGame only handles the validation of the user choice. Something like this but the code is far from complete

public class SomeControllerClass() {
    final int attempts = 4;
    int count = 0;

    public void someMethod() {
        int choice = 0;
        do {
            choice = getChoice();
            count++;
            String text = otherClass.startGuessingGame(choice, generatedNumber);
        while (count < attempts);
    }

and the method only does validation

public String startGuessingGame(int choice, int generatedNumber) {
    String result = null;

    if (choice == generatedNumber) {
        result = "Attempt " + count + " "
                        + "- You have guessed the correct number!";
    } else if (choice > 50 || choice < 0) {
    //and so on
   return result;
}

Try this: Incrementing the counter at the end before the while condition:

do{
    ...
    if (count == attempts) {

        result = "You are out of guesses! The number was " + generatedNumber;

    }
    count++;
}while(count < attempts);

return result;

...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM