简体   繁体   中英

Code after while loop not accepting input [Java]

So, in this program when the while loop ends, it properly displays "You Win!" and it does execute the code asking if the user wants to view credits. However, the input isn't being accepted after the question and the program ends without accepting any input.

Scanner scan = new Scanner(System.in);

        System.out.println("Would you like to play a game called Threes? Y/N");
        String answer = scan.nextLine();        //Simple yes or no

        if (answer.contains("Y") || (answer.contains("y"))) {
            System.out.println("OK, want to know how it works? Y/N");
            String answer2 = scan.nextLine();
            if (answer2.contains("n") || (answer2.contains("N"))) {
                System.out.println("OK, Enter a single number.");

                int mistake = 0;    //Used as a counter for number of division mistakes made
                int numstart = scan.nextInt();  //First number input
                int current = numstart;     //Current number displayed - starts as the first number

                System.out.println("Enter 1 or -1 if you're adding or subtracting, and 0 to divide.");
                System.out.println(numstart);       //Displays first number input
                int input = scan.nextInt();     //First function performed by user

                while (current != 1) {      //The game will run until the number '1' is reached
                    if (input == 1) {       //If '1' is input, add one to the number, and display new number
                        current++;
                        System.out.println(current);
                        input = scan.nextInt();
                    }
                    if (input == -1) {      //If '-1' is input, subtract one from the number, and display new number
                        current--;
                        System.out.println(current);
                        input = scan.nextInt();
                    }
                    if (input == 0) {       //If '0' is input, try to divide
                        if (current % 3 != 0 && current != 1) {     //If you can't divide by three, try again
                            System.out.println("Try again.");
                            mistake++;
                            input = scan.nextInt();
                        }
                        if (current % 3 == 0) {     //If you can divide, do it and display new number
                            current = current / 3;
                            System.out.println(current);
                            input = scan.nextInt();
                        }
                    }
                    if (input == 69 || input == 666)     //Cheat code! If you input 69 or 666, you automatically win
                        break;
                    if (((input > 1) && (input != 69) && (input != 666)) || input < -1) {        //If input is not valid, try again and display error
                        System.out.println("Error - wrong input.");
                        input = scan.nextInt();
                    }
                }
                System.out.println("You Win! Mistakes: " + mistake + "\n");        //Will display a win condition, and amount of division errors
                System.out.println("Thank you for playing Threes \n - Chris Burbach");
            }
            System.out.println("Credits? Y/N");
            String credits = scan.nextLine();

            if(credits.contains("Y")||credits.contains("y"))
            {
                System.out.println("\n***********************************************************************");
                System.out.println("*Threes: a game of dividing by three - inspired by my boredom in class*");
                System.out.println("***********************************************************************");

Sorry for any confusion, I figured it out. After each instance of "You Win!", outside of its nested if statement, I needed to add scan.nextLine(); because of it returning a newline character and terminating the program due to an empty input.

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