C語言中文網 目錄

Java完善除法運算的錯誤信息

本次實例的目的很簡單,就是由用戶輸入兩個數字,然后進行相除并輸出結果。但是要求程序對除法運算過程中的各種異常進行捕捉并提示用戶,例如除數是字符、被除數是零等。

在這個實例中定義了一個數組來存放要執行運算的兩個操作數,因此還需要對數組的索引越界異常進行處理,具體步驟如下。

(1) 創建計算類 Compute,聲明一個長度為 2 的 int 類型數組,接著編寫 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 來接收計算的結果,將從控制臺接收到的 int 類型的數據存儲到數組中,如果輸入 Y 表示將計算的結果存儲到數組下標為 2 的位置,接著在控制臺輸出結果。代碼如下:
Compute c=new Compute();
int array[]=c.getNum();
int res=0;
String YorN=null;
Scanner in=new Scanner(System.in);
try
{
    System.out.println("請輸入第一個整數:");
    array[0]=in.nextInt();
    System.out.println("請輸入第二個整數:");
    array[1]=in.nextInt();
    res=array[0]/array[1];
    System.out.println("是否保存結果請輸入Y或者N");
    YorN=in.next();
    if(YorN.equals("Y"))
    {
        array[2]=res;
    }
    System.out.println(array[0]+"除以"+array[1]+"的結果是:"+res);
}

(3) 使用 catch 分別捕獲可能出現的異常,代碼如下。
catch(ArrayIndexOutOfBoundsException e)
{
    System.out.println("出現數組越界錯誤,下標過大或者過小。");
}
catch(ArithmeticException e)
{
    System.out.println("出現算術運算錯誤,被除數不能為0。");

}
catch(InputMismatchException e)
{
    System.out.println("輸入的數據類型不匹配,只能輸入數字。");
}
catch(Exception e)
{
    System.out.println("發生未知錯誤。");
}

(4) 運行程序,先輸入一個整數,接著第二個數輸入 0,此時程序發生算術運算異常,異常被異常類型為 ArithmeticException 的 catch 語句塊捕獲,控制臺會輸出“出現算術運算錯誤,被除數不能為0。”,執行效果如下所示。
請輸入第一個整數:
100
請輸入第二個整數:
0
出現算術運算錯誤,被除數不能為0。

(5) 重新運行程序,先輸入一個整數,接著第二個數中輸入一個字符,此時程序發生類型不匹配異常,異常被異常類型為 InputMismatchException 的 catch 語句塊捕獲,控制臺會輸出“輸入的數據類型不匹配,只能輸入數字。”,執行效果如下所示。
請輸入第一個整數:
100
請輸入第二個整數:
9t
輸入的數據類型不匹配,只能輸入數字。

(6) 繼續運行程序,輸入兩個整數,然后控制臺輸出“是否保存結果請輸入Y或者N”。此時輸入“Y”,程序發生數組越界異常,因為長度為 2 的數組,其下標最大為 1。將結果保存在 army[2] 時出現數組越界錯誤,控制臺輸出“出現數組越界錯誤,下標過大或者過小。”。執行效果如下所示。
請輸入第一個整數:
100
請輸入第二個整數:
10
是否保存結果請輸入Y或者N
Y
出現數組越界錯誤,下標過大或者過小。

(7) 再次運行程序,輸入兩個整數。當控制臺輸出“是否保存結果請輸入Y或者N”時,輸入“N”,表示不保存運行結果,也就不需要對下標為 2 的地址空間的訪問,那么不會發生數組越界異常,程序可以順序執行到 try 語句塊中的最后一個輸出語句。執行效果如下所示。
請輸入第一個整數:
100
請輸入第二個整數:
20
是否保存結果請輸入Y或者N
N
100除以20的結果是:5

精美而實用的網站,提供C語言、C++、STL、Linux、Shell、Java、Go語言等教程,以及socket、GCC、vi、Swing、設計模式、JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo
极速pk10开户