Java程序使用户输入两次相同的输入,以便在初始输入错误

时间:2015-10-15 02:24:29

标签: java while-loop

我的程序有问题。一切都在顺利进行,但是,当用户输入错误的变量时,它会显示正确的反馈,但是用户必须输入一个比之前说明的额外变量。

也许这是我犯过的一个简单错误,但我无法看到它......

令人困惑。我运行程序时的一个例子:

How many grades would you like to average? 
3

Please enter 3 grades: 
90
jf //Intentional user input error
You've entered a non-numerical variable. Please enter a number: 
95
100 //The program should go ahead and calculate the average after this is entered
100 //It should not expect this fourth input if the amount of grades is 3

Your average is: 96.67

控制台中的第二个100输入不应出现,但是当用户至少有一个输入错误时它会出现。如果我要运行程序并输入所有正确的变量,那么程序就可以顺利运行。

当询问用户想要平均的等级数时,也会发生此错误。我认为第二部分更容易查看我的程序有什么问题。

我试图让这个程序顺利运行。感谢帮助!

for (gradesCount = 0; gradesCount < gradeNumber; gradesCount++) {
            // Check if the input variables are numerical variables
            while (!input.hasNextDouble()) {
                input.next();
                System.out.println("You've entered a non-numerical variable. Please enter a number: ");
                while (input.nextInt()<= 0){

                System.out.println("You've entered a negative number. Please eneter a positive number: ");
                }

            }
            // Read grade input
            gradesInput = input.nextDouble();

1 个答案:

答案 0 :(得分:0)

而不是input.hasNextDouble(),您可以尝试下面的

    Scanner scan = new Scanner(System.in);
    System.out.print("Enter total no of input ");
    int total = Integer.parseInt(scan.nextLine());
    int[] input = new int[total];
    for (int i = 0; i < total; i++) {
        while (true) {
            try {
                System.out.print("Enter number ");
                String in = scan.nextLine();
                input[i] = Integer.parseInt(in);
                break;
            } catch (RuntimeException re) {
                System.err.print("Invalid input. ");
            }
        }

    }
    scan.close();
    System.out.println(Arrays.toString(input));

它会强制用户仅输入数字,您可以根据需要添加边界或更改数据类型。