編寫一個計算N個整數平均值的程序。程序應該提示用戶輸入N的值,然後必須輸入所有Nnumbers。如果用戶爲N輸入了非正值,則應該拋出(並捕獲)出現「N必須是正數」消息的異常。如果在用戶輸入N個號碼時有任何異常,則應顯示錯誤消息,並且用戶提示再次輸入號碼。如果用戶沒有輸入整數,程序必須請求使用重新輸入值。Java程序計算平均值與例外
我是否正確地拋出異常?
import java.util.Scanner;
import java.util.InputMismatchException;
class Playground {
public static void main(String[ ] args) {
int sum = 0, mean;
System.out.println("Please enter number of integers");
Scanner sc1 = new Scanner(System.in);
int counter = sc1.nextInt();
if (counter <= 0) {
throw new InputMismatchException("N must be positive");
}
else {
System.out.println("Please enter "+counter+" numbers");
}
for (int i =0; i< counter; i++) {
int inputnum = sc1.nextInt();
if (inputsum <= 0){
throw new InputMismatchException("Please enter again");
continue;
}
sum = sum+inputnum;
System.out.println();
}
mean = sum/counter;
System.out.println(mean);
}
}
不,你做得不對。從你的問題:「*應該被拋出(**和被捕獲**)*」 - 你沒有捕捉到異常。 'throw'後的'continue'實際上是無法訪問的代碼。 – Maroun
用'System.err.println(「請再次輸入」)替換'throw new InputMismatchException(「請再次輸入」);'和everthing將按預期工作。閱讀有關例外的教程。 – clemens
雖然你想要求你的用戶再次輸入輸入,你的for循環仍然在滴答滴答。另外,即使這個數字不是正數,你仍然把它加到你的總和中,而你應該丟棄它。除了別人提到的異常處理之外,這些還有其他一些問題。 – Nishit