接受10个数字,将它们输入到数组中,然后调用一个方法来计算并返回最小的数字。该程序被认为是防错的,因此当用户输入无效条目时,它会通知用户并重新提交。我正在尝试使用try catch但是当输入无效条目时,即字符时,扫描程序将不会重新提示。
有什么想法吗?
//Variables
double [] doubleArray = new double[10];
Scanner input = new Scanner(System.in);
//Prompt
System.out.println("This program will prompt for 10 numbers and display the smallest of the group");
//Get values
for (int i = 0; i < doubleArray.length; i++) {
try {
System.out.println("Please enter entry "+ (i+1));
doubleArray[i] = input.nextDouble();
} catch (InputMismatchException e) {
// TODO: handle exception
System.out.println("Please enter a rational number");
i--;
}
}
//Invoke method and display result
System.out.println("The smallest value is: "+index(doubleArray));
答案 0 :(得分:2)
我没有看到对input.nextLine()
的任何调用,这意味着没有任何东西消耗用户输入的\ n。 scan.nextLine使用here就是一个很好的例子。如果你在catch块中添加一个调用,你应该全部设置。
答案 1 :(得分:1)
尝试在捕获中调用input.nextLine();
。然后,\n
将从输入中获取,您可以输入下一个新数字。
for(int i = 0; i < doubleArray.length; ++i) {
try {
doubleArray[i] = input.nextDouble();
} catch(Exception e) {
input.nextLine();
--i;
}
}
答案 2 :(得分:0)
尝试类似的东西(并确保使用整行,除非你想在同一行上输入多个数字
boolean validEntry = false;
System.out.println("Enter a rational number: ");
while (!validEnry) {
try {
double value = input.nextDouble();
validEntry = true;
doubleArray[i] = value;
} catch (Exception e) {
System.out.println("Entry invalid, please enter a rational number");
}
}
...
答案 3 :(得分:0)
您必须丢弃错误输入的数据,在input.nextLine()
块中添加catch
。