简体   繁体   English

while循环后的代码不接受输入[Java]

[英]Code after while loop not accepting input [Java]

So, in this program when the while loop ends, it properly displays "You Win!" 因此,在该程序中,当while循环结束时,它将正确显示“ 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(); 在“ You Win!”的每个实例之后,在其嵌套的if语句之外,我需要添加scan.nextLine(); because of it returning a newline character and terminating the program due to an empty input. 因为它返回换行符并由于输入为空而终止程序。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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