我的程序有问题。一切都在顺利进行,但是,当用户输入错误的变量时,它会显示正确的反馈,但是用户必须输入一个比之前说明的额外变量。
也许这是我犯过的一个简单错误,但我无法看到它......
令人困惑。我运行程序时的一个例子:
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();
答案 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));
它会强制用户仅输入数字,您可以根据需要添加边界或更改数据类型。