繁体   English   中英

用户输入中挂起的令牌不允许我继续执行程序

[英]Hanging token from user input is not allowing me to proceed in my program

如果我不输入数字并且我想再次浏览该程序,我的程序将不允许我输入用户输入,它认为是由于某个地方悬挂了令牌,但我似乎找不到它。

import java.util.Scanner;

public class LessonTwo {
    static Scanner userInput = new Scanner(System.in);
    public static void main(String[] args) {
        char answer = ' ';
        do {
            System.out.print("Your favorite number: "); 
            if (userInput.hasNextInt()) {
                int numberEntered = userInput.nextInt();
                userInput.nextLine();

                System.out.println("You entered " + numberEntered);

                int numEnteredTimes2 = numberEntered + numberEntered;
                System.out.println(numberEntered + " + " + numberEntered
                        + " = " + numEnteredTimes2);

                int numEnteredMinus2 = numberEntered - 2;
                System.out.println(numberEntered + " - 2 " + " = "
                        + numEnteredMinus2);

                int numEnteredTimesSelf = numberEntered * numberEntered;
                System.out.println(numberEntered + " * " + numberEntered
                        + " = " + numEnteredTimesSelf);

                double numEnteredDivide2 = (double) numberEntered / 2;
                System.out.println(numberEntered + " / 2 " + " = "
                        + numEnteredDivide2);

                int numEnteredRemainder = numberEntered % 2;
                System.out.println(numberEntered + " % 2 " + " = "
                        + numEnteredRemainder);

                numberEntered += 2; // *= /= %= Also work
                numberEntered -= 2;

                numberEntered++;
                numberEntered--;

                int numEnteredABS = Math.abs(numberEntered); // Returns the
                int whichIsBigger = Math.max(5, 7);
                int whichIsSmaller = Math.min(5, 7);

                double numSqrt = Math.sqrt(5.23);

                int numCeiling = (int) Math.ceil(5.23);
                System.out.println("Ceiling: " + numCeiling);

                int numFloor = (int) Math.floor(5.23);
                System.out.println("Floor: " + numFloor);

                int numRound = (int) Math.round(5.23);
                System.out.println("Rounded: " + numRound);

                int randomNumber = (int) (Math.random() * 10);
                System.out.println("A random number " + randomNumber);

            } else {
                System.out.println("Sorry you must enter an integer");
            }
            System.out.print("Would you like to try again? ");

            answer = userInput.next().charAt(0);

        }while(Character.toUpperCase(answer) == 'Y');
        System.exit(0);
    }
}

是的,你是对的,你需要将用户输入后第一消耗字符, characternextInt再次允许用户输入数据之前

只需将其添加到您的else块中,它将起作用:

    else {
        System.out.println("Sorry you must enter an integer");
        userInput.nextLine(); //will consume the character that was inputted in the `nextInt`

    }

编辑:

改变这个:

answer = userInput.next().charAt(0);

至:

answer = userInput.nextLine().charAt(0);

暂无
暂无

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

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