這次的功課,要將老師原本的範例檔GenericMethodTest改寫,多新增一個相同名稱的泛型方法,此方法要能夠將陣列中的某幾項元素抓取出來,並且當設定值不正確時,拋出一個InvalidSubscriptException例外錯誤。
執行結果:
系統內的三個陣列內容如下:
整數陣列:
1 2 3 4 5 6
浮點數陣列:
1.1 2.2 3.3 4.4 5.5 6.6 7.7
字元陣列:
H E L L O
測試整數陣列由1~4的元素值:
2 3 4 5
測試浮點數陣列由5~8的元素值:
錯誤訊息:您的上限值可能超過陣列元素個數 請重新檢查範圍
測試字元陣列由8~4的元素值:
錯誤訊息:您的上限值可能低於下限值 請重新檢查範圍
底下分享我自己寫的部分,另外也歡迎平時有光顧我網誌的讀者,可以在底下留言自己的寫法。^-^
寫法僅供參考,畢竟Java才學不到一年吧 >”<
(大家記得註解和程式碼要自己重新打過唷,工讀生會檢查;建議大家可以改寫Exception那邊的程式碼,這部分大家可多多嘗試不同的寫法唷,另外變數名稱和註解內容也修改掉)
程式碼:
>
public class s11967046 { public static void main(String[] args) { /* 11967046 * * 請將GenericMethodTest.java中 * 的泛型printArray方法多載化, * 讓他可以接收兩個額外的整數引數: * lowSubscript和highSubscript。 * 呼叫這個方法只會印出陣列中指定的區域。 * 請檢查lowSubscript和highSubscript, * 如果有一個超過範圍,或是highSubscript * 小於等於lowSubscript,這個多載化的方法應該拋出 * InvalidSubscriptException;否則應該回傳印出的元素個數。 * 然後修改main,以integerArray、doubleArray、 * characterArray這些陣列實驗兩種版本的printArray。 * 測試這兩種printArray版本的功能。 */ Integer[] integerArray = { 1, 2, 3, 4, 5, 6 }; Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7 }; Character[] characterArray = { 'H', 'E', 'L', 'L', 'O' }; System.out.println("系統內的三個陣列內容如下:"); System.out.println( "整數陣列:" ); printArray(integerArray); System.out.println( "\n浮點數陣列:" ); printArray(doubleArray); System.out.println( "\n字元陣列:" ); printArray(characterArray); System.out.println("\n測試整數陣列由1~4的元素值:"); //呼叫第二個方法,擷取陣列內指定的區域 printArray(integerArray, 1, 4); System.out.println("\n測試浮點數陣列由5~8的元素值:"); //呼叫此方法應該會拋出InvalidSubscriptException printArray(doubleArray, 5, 8); System.out.println("\n測試字元陣列由8~4的元素值:"); //呼叫此方法應該會拋出InvalidSubscriptException printArray(characterArray, 8, 4); } public static < E > void printArray( E[] inputArray ){ //顯示陣列元素 for ( E element : inputArray ) System.out.printf( "%s ", element ); System.out.println(); } //多載printArray方法 public static < E > void printArray( E[] inputArray ,int lowSubscript, int highSubscript){ try{ if(highSubscript <= lowSubscript){ //拋出InvalidSubscriptException throw new InvalidSubscriptException( "您的上限值可能低於下限值"); }else if(highSubscript >= inputArray.length){ //拋出InvalidSubscriptException throw new InvalidSubscriptException( "您的上限值可能超過陣列元素個數"); } //顯示lowSubscript和highSubscript之間的陣列元素 for (int i = lowSubscript;i<=highSubscript;i++){ System.out.printf("%s ",inputArray[i]); } System.out.println(); }catch (InvalidSubscriptException e){ System.out.print("錯誤訊息:"); System.out.println(e.getMessage()); } } } //自定義InvalidSubscriptException的錯誤訊息 class InvalidSubscriptException extends Exception{ public InvalidSubscriptException(String message){ super(message + " 請重新檢查範圍"); } }
沒有留言:
張貼留言
歡迎提供良性建議^_^