這是用於作業。程序在Java中處理異常後完成
我想創建一個程序,需要十個輸入數字的平均值。當用戶輸入不是數字的字符時,會捕獲NumberFormatException異常。該程序在異常被捕獲後完成,因此我將其更改爲使用遞歸在異常被捕獲後再次調用該方法,但現在它會打印多個平均值,其中一些不正確。
如何更改程序,使其在異常被捕獲而不是完成後繼續詢問輸入?捕捉異常後,我不希望程序結束。
import java.util.Scanner;
import java.util.Scanner;
public class PrintAverage {
int average;
public static void main(String args[]) {
System.out.println("You are going to enter ten numbers to find their average.");
getInput();
}
private static void getInput() {
String input;
int sum = 0;
int[] arrayOfIntegers = new int[10];
double average = 0;
Scanner scanner = new Scanner(System.in);
try {
for (int i = 0; i < arrayOfIntegers.length; i++) {
System.out.println("Enter the next number.");
input = scanner.nextLine();
arrayOfIntegers[i] = Integer.parseInt(input);
}
} catch (NumberFormatException exception) {
System.out.println("The last entry was not a valid number.");
getInput();
}
for (int k = 0; k < arrayOfIntegers.length; k++) {
sum = sum + arrayOfIntegers[k];
}
average = sum/arrayOfIntegers.length;
System.out.println("The average is " + average);
}
}
您可以考慮使用'Scanner.hasNextInt()'來驗證輸入是試圖解析它之前一個整數(使用'Scanner.nextInt ()')。 –
不錯的一個!這裏的文檔:http://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html#hasNextInt-- – pyb
getInput()方法應該只做它的名字:Get輸入。請用另一種方法移動平均值計算,並在整數數組準備就緒時調用它。 – sanastasiadis