分析題目
NumberFormatException,數字格式異常,常見於由字符串轉換到數字的時候會出現
比如abc2.0--轉換成數字時,系統就會拋出這個異常。
ArithmeticException ,除0異常。這個異常常見於整數除整數,如果被除數是0,那麽會拋出這個異常。但是提示要求是小數除小數。double小數就算是0,那麽在存儲的時候也不是簡單的0,而可能是0.00000000001等情況,那麽除零異常就不會被拋出。我們可以自己手動判斷被除數是否等於0,如果等於0,那麽我們手動拋出該異常,然後進行捕獲
參考代碼壹:簡潔版
import?java.util.Scanner;public?class?DivDemoSp?{
public?static?void?main(String[]?args)?{
Scanner?sc?=?new?Scanner(System.in);
while(true){
try{
System.out.println("輸入除數");
double?d1?=?Double.parseDouble(sc.nextLine());
System.out.println("輸入被除數");
double?d2?=?Double.parseDouble(sc.nextLine());
if(d2==0){
throw?new?ArithmeticException("捕獲到除0異常~~!!");//手動拋出除零異常
}
double?d3?=?d1?/?d2;
System.out.println("計算結果:"?+?d1?+?"/"?+?d2?+?"="?+?d3);
break;//如果能正常運行到這裏,說明前面的輸入都是正確的,所以可以跳出循環了
}catch(NumberFormatException?e1){//捕獲數字格式異常
System.out.println("捕獲到數字格式異常");
continue;
}catch?(ArithmeticException?e2)?{//捕獲到除零異常
System.out.println(e2.getMessage());
continue;
}
}
}
}
測試代碼
輸入除數12
輸入被除數
0
捕獲到除0異常~~!!
輸入除數
12
輸入被除數
agc
捕獲到數字格式異常
輸入除數
12
輸入被除數
0.5
計算結果:12.0/0.5=24.0
參考代碼二:
public?class?DivDemo?{static?Scanner?sc?=?new?Scanner(System.in);//?定義壹個掃描器,用於讀取輸入信息
public?static?void?main(String[]?args)?{//?main方法
div();//?調用除法方法
}
//div方法,用於得到2個小數,並且進行除法運算,如果被除數為0.拋出除零異常
static?void?div()?{
double?d1?=?getNum("輸入除數");//?調用輸入數字的方法
double?d2?=?getNum("輸入被除數");
try?{
if?(d2?==?0)?{//如果被除數等於0,那麽拋出除零異常
throw?new?ArithmeticException("捕獲到除零異常!!!");
}
double?d3?=?d1?/?d2;
System.out.println("計算結果:"?+?d1?+?"/"?+?d2?+?"="?+?d3);
//?div();//可以重新調用div方法,再次進行輸入
}?catch?(ArithmeticException?exception)?{//捕獲到除零異常
System.out.println(exception.getMessage());//打印出異常信息
//?div();//當捕獲異常後,也可以重新調用div方法,再次進行輸入
}
}
//getNum方法,用於得到壹個數字
static?double?getNum(String?tips)?{
double?dnum;//?定義壹個小數變量
while?(true)?{
try?{
System.out.println(tips);//?顯示提示文字
String?s1?=?sc.nextLine();//?讀取輸入的壹行信息
dnum?=?Double.parseDouble(s1);//?如果可以把輸入的信息轉換成數字就跳出循環,
//?如果無法把信息轉成數字就會報數字格式異常
break;//跳出循環
}?catch?(NumberFormatException?exception)?{//捕獲數字格式異常
System.out.println("捕獲到了數字格式錯誤異常!!!");//提示文字,並且繼續循環
}
}
return?dnum;//返回數字
}
}
運行測試
輸入除數1.0
輸入被除數
0
捕獲到除零異常!!!
輸入除數
1.0abc
捕獲到了數字格式錯誤異常!!!
輸入除數
1.0
輸入被除數
0.5
計算結果:1.0/0.5=2.0