這次的功課,要將老師原本的範例檔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 + " 請重新檢查範圍");
}
}
沒有留言:
張貼留言
歡迎提供良性建議^_^