簡體   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