問題描述:
package Demo3;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Pri {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
double sum = 0;
int b;
int count=0;
while(true){
try {
b=scanner.nextInt();
if(b==0){
break;
}
sum+=b;
count++;
} catch (InputMismatchException ex) {
System.out.printf("略過非數字格式,%s%n",scanner.nextInt());
}
}
System.out.printf("平均 %.2f%n",sum/count);
}
}
問題解答1:你這個異常不是在try塊中拋出的。
看一下你的代碼,在try塊中執行到讀取輸入時,假如輸入的是不合規範的內容,引發了異常,這時程序跳轉到catch塊中執行,以上流程你沒有異議吧?
注意,關鍵在這裏:catch塊中的語句是, System.out.printf("略過非數字格式,%s%n",scanner.nextInt());
這裏你又用了scanner.nextInt(),所以,再一次引發了InputMismatchException異常,而這一次很不幸地沒有相關語句來捕獲它,所以就在控制檯拋出了。
以上介紹了“Java執行時發生異常,但是無法跳到Catch異常區塊,異常類型InputMismatchException。”的問題解答,希望對有需要的網友有所幫助。