1.14 实例:完善除法运算的错误信息
本次實(shí)例的目的很簡單,就是由用戶輸入兩個數(shù)字,然后進(jìn)行相除并輸出結(jié)果。但是要求程序?qū)Τㄟ\(yùn)算過程中的各種異常進(jìn)行捕捉并提示用戶,例如除數(shù)是字符、被除數(shù)是零等。
在這個實(shí)例中定義了一個數(shù)組來存放要執(zhí)行運(yùn)算的兩個操作數(shù),因此還需要對數(shù)組的索引越界異常進(jìn)行處理,具體步驟如下。
1)創(chuàng)建計算類 Compute,聲明一個長度為 2 的 int 類型數(shù)組,接著編寫 get() 和 set() 方法,代碼如下:
public class Compute {private int[] num = new int[2];public int[] getNum() {return num;}public void setNum(int[] num) {this.num = num;} }2)在 Compute 類的 main() 方法中編寫測試代碼。定義一個 int 類型的變量 res 來接收計算的結(jié)果,將從控制臺接收到的 int 類型的數(shù)據(jù)存儲到數(shù)組中,如果輸入 Y 表示將計算的結(jié)果存儲到數(shù)組下標(biāo)為 2 的位置,接著在控制臺輸出結(jié)果。代碼如下:
public class Test{public static void main(String[] args) {Compute c = new Compute();int array[] = c.getNum();int res = 0;String YorN = null;Scanner in = new Scanner(System.in);try {System.out.println("請輸入第一個整數(shù):");array[0] = in.nextInt();System.out.println("請輸入第二個整數(shù):");array[1] = in.nextInt();res = array[0] / array[1];System.out.println("是否保存結(jié)果請輸入Y或者N");YorN = in.next();if (YorN.equals("Y")) {array[2] = res;}System.out.println(array[0] + "除以" + array[1] + "的結(jié)果是:" + res);}} }3)使用 catch 分別捕獲可能出現(xiàn)的異常,代碼如下。
catch (ArrayIndexOutOfBoundsException e) {System.out.println("出現(xiàn)數(shù)組越界錯誤,下標(biāo)過大或者過小。"); } catch(ArithmeticException e) {System.out.println("出現(xiàn)算術(shù)運(yùn)算錯誤,被除數(shù)不能為0。"); } catch(InputMismatchException e) {System.out.println("輸入的數(shù)據(jù)類型不匹配,只能輸入數(shù)字。"); } catch(Exception e) {System.out.println("發(fā)生未知錯誤。"); }4)運(yùn)行程序,先輸入一個整數(shù),接著第二個數(shù)輸入 0,此時程序發(fā)生算術(shù)運(yùn)算異常,異常被異常類型為 ArithmeticException 的 catch 語句塊捕獲,控制臺會輸出“出現(xiàn)算術(shù)運(yùn)算錯誤,被除數(shù)不能為0。”,執(zhí)行效果如下所示。
請輸入第一個整數(shù): 100 請輸入第二個整數(shù): 0 出現(xiàn)算術(shù)運(yùn)算錯誤,被除數(shù)不能為0。5)重新運(yùn)行程序,先輸入一個整數(shù),接著第二個數(shù)中輸入一個字符,此時程序發(fā)生類型不匹配異常,異常被異常類型為 InputMismatchException 的 catch 語句塊捕獲,控制臺會輸出“輸入的數(shù)據(jù)類型不匹配,只能輸入數(shù)字。”,執(zhí)行效果如下所示。
請輸入第一個整數(shù): 100 請輸入第二個整數(shù): 9t 輸入的數(shù)據(jù)類型不匹配,只能輸入數(shù)字。6)繼續(xù)運(yùn)行程序,輸入兩個整數(shù),然后控制臺輸出“是否保存結(jié)果請輸入Y 或者 N”。此時輸入“Y”,程序發(fā)生數(shù)組越界異常,因?yàn)殚L度為 2 的數(shù)組,其下標(biāo)最大為 1。將結(jié)果保存在 array[2] 時出現(xiàn)數(shù)組越界錯誤,控制臺輸出“出現(xiàn)數(shù)組越界錯誤,下標(biāo)過大或者過小”。執(zhí)行效果如下所示。
請輸入第一個整數(shù): 100 請輸入第二個整數(shù): 10 是否保存結(jié)果請輸入Y或者N Y 出現(xiàn)數(shù)組越界錯誤,下標(biāo)過大或者過小。7)再次運(yùn)行程序,輸入兩個整數(shù)。當(dāng)控制臺輸出“是否保存結(jié)果請輸入Y或者N”時,輸入“N”,表示不保存運(yùn)行結(jié)果,也就不需要對下標(biāo)為 2 的地址空間的訪問,那么不會發(fā)生數(shù)組越界異常,程序可以順序執(zhí)行到 try 語句塊中的最后一個輸出語句。執(zhí)行效果如下所示。
請輸入第一個整數(shù): 100 請輸入第二個整數(shù): 20 是否保存結(jié)果請輸入Y或者N N 100除以20的結(jié)果是:5總結(jié)
以上是生活随笔為你收集整理的1.14 实例:完善除法运算的错误信息的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.12 声明自定义异常
- 下一篇: 1.15 异常处理规则