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

时间:2014-08-22 02:40:12

标签: java

我的程序不允许我输入用户输入,如果我没有输入数字,我想再次通过该程序,它认为它是由于某处挂着令牌,但我似乎无法找到它。

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);
    }
}

1 个答案:

答案 0 :(得分:0)

是的,在用户在character中输入nextInt之后,您需要消费才能让用户再次输入数据

只需在你的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);