1. 程式人生 > 其它 >題目集1-總結Blog

題目集1-總結Blog

目錄

前言

第一次題目集:

  • 主要考察基礎資料型別的使用,邏輯問題的分析,資料處理能力以及輸入格式錯誤處理能力;
  • 題量相對較大,難度較小;

第二次題目集:

  • 主要考察字串處理能力和輸入格式錯誤處理能力;
  • 題量適中,難度適中;

第三次題目集:

  • 主要考察判斷輸入字串格式正誤,對輸入座標資料處理,以及進行各種計算和判斷;
  • 題量適中,難度大,程式碼量大,得分還難!!並且存在格式錯誤考慮不全面問題;

設計與分析

  • 由於三次作業題目過多就只提出其中四個有參考改進意義的:

題目集2的7-2:

  • SourceMonitor分析:
  • 由該分析圖可看出該程式碼並不複雜,程式碼量小,但是程式碼深度較高
  • 主要用於處理字串口問題,所以只要考問題全面,處理好奇偶校驗、有效資料、結束位問題,不需要建立另外的類;

題目集3的7-1:

  • SourceMonitor分析:
  • 該問題主要處理輸入座標,計算座標距離,不需要另外的類,如果實在想要建立類可以建立Point類,不過意義不大;
  • 對於輸入資料格式處理問題並沒有做到位,測試了很久也還有一個得分點未達到;

題目集3的7-2:

  • SourceMonitor分析:
  • 類圖:
  • 對於該題的處理建立Point類以及Line類,將所有與兩個類有關的方法全部寫在類中,實現方法例項化(有物件才能呼叫該方法),個人認為程式碼複用性適中,但是主要是兩個類耦合度比較高,不太能分開使用;
    • 對於Point類中進行了equals方法重寫,求斜率以及判斷三點是否共線;
    • 對於Line類中可以計算點線距,兩線是否平行,以及求交點;

題目集3的7-3:

  • SourceMonitor分析:
  • 類圖:
  • 在我個人看來7-3是7-2的plus版本,在點線問題的基礎之上添加了三角形問題,但是原理還是不變無非就是問題複雜程度變高,但是隻要合理進行問題拆分,其實也可以解決;
  • 由於資料輸出結果的特定要求,使用了DecimalFormat類,可以進行格式化輸出;
  • 射線法一開始不太理解,後來個人的理解就是將要判斷的點與任意一點構成直線判斷該直線和三角形三邊交點個數即可;

踩坑心得

作業2的7-2:

  • 該作業最大的問題在於按照正確的的思路寫好之後進行資料測試,開始的資料還可以完美通過,後來輸入某些資料會出現程式一直持續執行,根本無法停止,於是一步一步除錯,發現是因為使用了indexOf()方法;
  • 我使用的是int indexOf(String str, int startIndex):從指定的索引處開始,返回第一次出現的指定子字串在此字串中的索引,我想用它放在迴圈中獲取有效資料起始位置但是由於瞭解不夠引發了無限次迴圈問題;
  • indexOf(String sint indexOf(String str, int startIndex)使用的注意事項是:如果 startindex 是負數,則 startindex 被當作零。如果它比最大的字元位置 索引還大,則它被當作最大的可能索引,所以一般要判斷indexOf方法返回的下標會不會小於你的startIndex!!(很重要,否則可能導致程式進入死迴圈無法停下)

作業3的總體總結:

  • 對輸入資料格式處理不夠全面導致所有功能實現也沒有拿到全分;
  • 對於Point和Line中的屬性未進行封裝,可能出現數據洩露問題;
  • 對於作業3的7-3,其中有功能4是要進行交點計算和麵積分割計算,開始沒考慮到構成直線的前兩點座標會和三角形端點重合後來進行改進:
    • 對於不與端點重合,且交點有兩個,則先算小三角形面積,根據S(大三角形)-S(小三角形)=S(不規則圖形)來計算;
    • 對於端點重合,即將三角形分為兩個小三角,則用小三角形底邊佔比計算;

改進建議

  • 希望在老師編寫題目時可以將提交測試時可能出現的例子大致列出,否則提交之後系統給出的錯誤只有casexx···答案/格式錯誤,修改程式碼不知道如何下手

總結

  • 發現自己寫程式碼時主要三個問題:
    • 題意理解錯誤
    • 程式碼架構錯誤(錯誤使用方法,以及對方法沒有完全掌握盲目使用)
    • 不小心寫錯(比如輸出內容打字時打錯,測試點一直過不了還以為是程式碼結構問題)
      個人的題意理解和打字問題出現較多,
  • 收穫:
    • 知道了在什麼地方建立類,以何種方式,類中的屬性和方法的內容;
    • 基本掌握String類的方法,瞭解大概用途,知道了該類的重要性,如果要融會貫通還需要深入學習;