本次PTA做業題集異常
java
結合題集題目7-1回答程序員
答:7-1這題中主要作的就是捕獲運行時產生的異常以及用戶主動拋出的異常;
之前編寫的代碼容易出現如下問題:數組
Exception
類,像RunTimeException
這種直接繼承自Exception
類的才必須捕獲。答:對於直接繼承自Exception
類的異常,在編寫代碼的時候必需要捕獲(如RuntimeException
),不然編譯不容許經過。函數
題集題目7-2學習
答:本題主要作的就是使用異常處理輸入機制,於是要在將數據傳入數組的語句塊處使用try-catch
語句,對可能傳入的不符合要求的數據產生的異常進行捕獲。
要使程序更加健壯,就要對程序中可能產生異常的語句加上try-catch
語句對異常進行捕獲,此外還要注意傳入數據的語句塊也容易傳入不符合要求的數據,於是也常須要使用異常處理輸入機制。設計
題集題目7-3
閱讀Integer.parsetInt
源代碼code
Integer.parsetInt
一開始就有大量的拋出異常的代碼,這種作法有什麼好處?
源代碼如上圖,一開始便拋出大量的異常的代碼,先將對爲Null
的對象拋出異常,再對進制不在最小進制二進制
及最大進制三十六進制
的數據對象拋出異常,這樣作的好處是能夠先把徹底不符合要求的對象進行剔除,以後再對剩下的數據作進一步的篩選判斷。orm
答:拋出異常時應讓使用者明確知道產生的是什麼異常,以及產生異常的具體緣由及位置,而不是僅僅告訴使用者有異常,但不給出具體的問題所在。
因此在編寫方法時,在拋出異常的模塊處須要指明產生的是什麼樣的異常以及產生異常的具體緣由及位置。視頻
題集題目6-3對象
答:經過使用異常處理機制拋出異常,可讓使用者更加明確地知道操做失敗的具體類型、緣由及位置等信息;
而單純的返回null或錯誤值,就等因而告訴使用者」你執行的操做失敗了,但我不告訴你具體的失敗緣由」,這樣就顯得程序比較弱小。
答:若是內碼拋出的是RuntimeException類型的異常,則方法聲明可不使用throws關鍵字。由於直接繼承Exception
類的異常才必需要被捕獲。
若是是RuntimeException
,則拋出異常後虛擬機會進行處理,不須要程序員編寫try-catch
語句,而非RuntimeException
,則須要在編寫時自行捕獲並處理。
題集題目6-1
答:當一個try塊中若是可能拋出多種異常,且異常之間可能有繼承關係時,若父類的捕獲語句在子類前,則因爲代碼執行是按序執行的,此時優先執行父類的捕獲語句,而子類的異常繼承自父類,因此當父類的捕獲後,該異常已經沒法再繼續被子類捕獲,此時便失去了子類捕獲語句的做用。
於是在捕獲時,須要注意要將子類的異常捕獲語句放置在父類的異常捕獲語句前。
答:一個try塊中若是可能拋出多種異常,則使用Java8的多重異常捕獲語法須要注意在try塊後分別爲每一種異常添加一個catch
語句塊,且若各異常之間有繼承關係,則子類的異常捕獲須要放在父類的異常捕獲前。
byte[] content = null; FileInputStream fis = new FileInputStream("testfis.txt"); int bytesAvailabe = fis.available();//得到該文件可用的字節數 if(bytesAvailabe>0){ content = new byte[bytesAvailabe];//建立可容納文件大小的數組 fis.read(content);//將文件內容讀入數組 } System.out.println(Arrays.toString(content));//打印數組內容
找不到文件xxx,請從新輸入文件名
,而後嘗試從新打開。 若是是其餘異常則提示打開或讀取文件失敗!
。注1:裏面有多個方法都可能拋出異常。
功能2:須要添加finally
關閉文件。不管上面的代碼是否產生異常,總要提示關閉文件ing
。若是關閉文件失敗,提示關閉文件失敗
!
文件不存在時:
文件存在時:
6-2
代碼,要將什麼樣操做放在finally塊?爲何?使用finally關閉資源須要注意一些什麼?答:在try-catch
語句塊後,如有不管如何都須要執行的語句,則須要放進finally
語句中,如上一步的關閉文件是不管如何都須要執行的,此外還有其餘類型的資源釋放一般也須要放進finally
語句塊中。
使用finally關閉資源的時候,由於關閉資源的語句也有可能會產生異常,所以也須要使用try-catch
語句。
try-with-resources
來改寫上述代碼實現自動關閉資源。簡述這種方法有何好處?文件不存在時:
文件存在時:
在try後面加個括號,再初始化對象的語法就叫try-with-resources,使用這種語法,則自動調用了資源的close()函數,因此程序員無需在編寫時再編寫資源的關閉釋放語句。
登陸lib.jmu.edu.cn,對圖書進行搜索。而後登陸圖書館信息系統,查看個人圖書館。若是讓你實現一個圖書借閱系統,嘗試使用面向對象建模。
答:主要應該是兩類,一是普通使用者,二是圖書館系統的管理員。
答:
答:針對使用對象,可設計一個User類,屬性爲普通使用者與管理員共有的屬性(帳號密碼等),而普通使用者類與管理員類可繼承User類,而後擴展其餘屬性,此外還須要一個圖書類用於記錄圖書對象的信息。
答:如果較爲簡單的信息,則可使用動態數組來存儲信息較爲簡單;
如果信息較多較複雜,則須要使用文件來存儲各模塊的信息,固然文件的操做也會相對複雜。
會嘗試着使用文件來解決,如果實現有困難則會考慮選擇動態數組來處理。
題目集:異常
須要有兩張圖(1. 排名圖。2.PTA提交列表圖)
須要將每週的代碼統計狀況融合到一張表中。
周次 | 總代碼量 | 新增代碼量 | 總文件數 | 新增文件數 |
---|---|---|---|---|
1 | 90 | 90 | 5 | 5 |
2 | 322 | 232 | 11 | 6 |
3 | 652 | 330 | 16 | 5 |
4 | 946 | 294 | 21 | 5 |
5 | 1347 | 401 | 26 | 5 |
6 | 1591 | 244 | 28 | 2 |
7 | 2118 | 527 | 31 | 3 |
8 | 2627 | 509 | 39 | 8 |
9 | 2912 | 285 | 42 | 3 |
10 | 3171 | 259 | 50 | 8 |