答::java
本次PTA做業題集異常數據庫
結合題集題目7-1回答數組
答:網絡
在編寫程序時,應注意條理清楚,細心細緻。出錯時,採用try-catch去捕獲異常。less
答:屬於Checked Exception類型異常必定須要進行捕獲處理。Checked Exception類型異常就是除RuntimeException外的Exception和其子類異常。函數
題集題目7-2學習
答:設計
try{ int value = Integer.parseInt(line); arr[i] = value; }
題集題目7-3
閱讀Integer.parsetInt源代碼3d
答:指針
public static int parseInt(String s) throws NumberFormatException { return parseInt(s,10); } public static int parseInt(String s, int radix) throws NumberFormatException { if (s == null) { throw new NumberFormatException("null"); } if (radix < Character.MIN_RADIX) { throw new NumberFormatException("radix " + radix + " less than Character.MIN_RADIX"); } if (radix > Character.MAX_RADIX) { throw new NumberFormatException("radix " + radix + " greater than Character.MAX_RADIX"); }
好處:在這裏,拋出的異常爲 NumberFormatException 。針對輸入格式不符的數據所產生異常,拋出異常的信息,提醒用戶端輸入格式有誤。包括輸入s爲null,輸入的進制數小於2,大於36等狀況進行拋出異常。
答:傳遞給調用者關於輸入的調用範圍是否正確,當索引開始begin>索引結尾end時,拋出begin>end的異常;當索引開始begin<0,拋出begin<0的異常;當索引結尾end大於數組長度的時候,拋出end>arr.length異常。
題集題目6-3
答:使用拋出異常的方式可讓程序在出錯的時候當即中止運行,明確地告訴使用者程序出錯的地方行數,出錯的緣由,從直觀上就能夠發現錯誤點。而使用返回錯誤值來提醒程序錯誤沒辦法想拋異常那樣直觀又明確錯誤的緣由,錯誤的位置,程序也不會由於錯誤而中止。例以下代碼,入棧操做時,若是棧滿時直接拋出FullStackException異常。
public Integer push(Integer item) throws FullStackException { if(item==null) { return null; } if(top==capacity){ FullStackException e=new FullStackException(); throw e; } arrStack[top]=item; top++; return item; }
答:能夠不使用throws,RuntimeException異常是Unchecked Exception,不必定須要被捕獲,因此能夠不使用。當某個方法可能會發生異常,但不想在當前方法中處理這個異常,那麼可使用throws、throw關鍵字在方法中拋出異常。在一個方法中使用throws,能夠提早針對一些可能發生的錯誤進行預防,提醒調用者應該對發生的錯誤異常進行修正。
題集題目6-1
答:在catch中應注意子類異常必須放在父類異常前面,不然父類異常會在子類異常前先被捕捉,而子類異常catch的區塊永遠不會被執行,程序會發生編譯出錯。例如先NumberFormatException 再IllegalArgumentException 最後Exception。
答:使用多重捕獲語法,可讓代碼簡潔,但必須注意異常的繼承,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));//打印數組內容
注1:裏面有多個方法都可能拋出異常。
功能2:須要添加finally關閉文件。不管上面的代碼是否產生異常,總要提示關閉文件ing。若是關閉文件失敗,提示關閉文件失敗!
答:代碼改正後運行截圖
當輸入文件名有誤時:
從新輸入文件名後
改寫後代碼:
Scanner sc=new Scanner(System.in); byte[] content = null; FileInputStream fis =null; while(true){ String name=sc.next(); try{ fis = new FileInputStream(name); int bytesAvailabe = fis.available();//得到該文件可用的字節數 if(bytesAvailabe>0){ content = new byte[bytesAvailabe];//建立可容納文件大小的數組 fis.read(content);//將文件內容讀入數組 } System.out.println(Arrays.toString(content));//打印數組內容 }catch(FileNotFoundException e){ System.out.println("找不到文件"+name+"請從新輸入文件名"); continue; } catch(Exception e1){ System.out.println("打開或讀取文件失敗"); } finally{ if(fis!=null){ try{ fis.close(); System.out.println("關閉文件ing"); }catch(Exception e2){ System.out.println("關閉文件失敗"); } } } }
答:在finally中釋放資源,保證佔用的資源不管如何都能被釋放,執行一些釋放資源的代碼,如關閉數據庫、關閉網絡鏈接。也能在程序發生異常,拋出異常處以後的代碼還須要被執行時,將要執行的代碼放入finally。finally區塊中的代碼不管什麼時候都會被執行。在finally中還應加入try-catch,由於finally內部也可能會發生異常,例如在資源關閉失敗的時候,執行try-catch拋出關閉失敗異常。
答:實現自動關閉資源,即將資源放入try後的括號裏。
while(true){ String name=sc.next(); try(FileInputStream fis = new FileInputStream(name)){ int bytesAvailabe = fis.available();//得到該文件可用的字節數 if(bytesAvailabe>0){ content = new byte[bytesAvailabe];//建立可容納文件大小的數組 fis.read(content);//將文件內容讀入數組 } System.out.println(Arrays.toString(content));//打印數組內容 }catch(FileNotFoundException e){ System.out.println("找不到文件"+name+"請從新輸入文件名"); continue; } catch(Exception e1){ System.out.println("打開或讀取文件失敗"); } }
好處:確保資源已經被關閉,而不是在finally語句中還須要加入try-catch區塊,讓代碼簡潔流暢,再也不臃腫。
登陸lib.jmu.edu.cn,對圖書進行搜索。而後登陸圖書館信息系統,查看個人圖書館。若是讓你實現一個圖書借閱系統,嘗試使用面向對象建模。
答:圖書管理員,學生,教職工。
答:主要模塊:
負責
答:
答:能夠考慮用Set集合或文件來存儲信息。
題目集:異常
在碼雲的項目中,依次選擇「統計-Commits歷史-設置時間段」, 而後搜索並截圖
答:
須要有兩張圖(1. 排名圖。2.PTA提交列表圖)
須要將每週的代碼統計狀況融合到一張表中。
周次 | 總代碼量 | 新增代碼量 | 總文件數 | 新增文件數 |
---|---|---|---|---|
1 | 0 | 0 | 0 | 0 |
2 | 0 | 0 | 0 | 0 |
3 | 0 | 0 | 0 | 0 |
4 | 0 | 0 | 0 | 0 |
5 | 739 | 739 | 16 | 16 |
6 | 1084 | 345 | 28 | 12 |
7 | 1180 | 96 | 30 | 2 |
8 | 1627 | 447 | 35 | 5 |
9 | 1986 | 359 | 44 | 9 |
10 | 2350 | 364 | 56 | 12 |
11 | 2534 | 184 | 61 | 5 |