Java1~3次大作業題目集的總結性Blog
- 前言
這近一個月的1~3大作業題目讓我逐步深入接觸java,使用java物件導向處理問題,在寫程式碼的過程中,我開始接觸了大量相關知識點的同時,我自己也發現了很多需要學習的地方和很多自身問題,這些問題都需要我自己去改進。
- 三次作業我學習使用了ArrayList、LinkedList、HashMap等集合類來處理問題對相關題目,答卷陣列的資訊處理更加方便了,在呼叫的時候也更加快捷。
- 熟悉了多個類之間的關係以及使用,簡化了程式碼的複雜度。
- 學習到了使用正規表示式處理問題以及獲取資訊,這是一個不容忽視的知識點
- 學習使用物件導向的方法進行程式設計,使得程式碼層次鮮明而且在後續的使用和相關資訊新增上更加方便,不用大幅度改動。
- 三次題量適中不算太多,對我來說主要是主要是題目難度以及所花費的時間問題,在最後一題上花費的時間偏多,有時候花費了很多時間卻不容易得到測試點的分,自己的題目拆分和類設計也有問題,有時候沒有思考仔細就上手寫程式碼,後續出現了很多問題,最後問題都沒有解決。
- 設計與分析
第一次大作業
類圖
耦合度
解釋
第一次的大作業難度不大,在題目建議的基礎上我設計了題目、試卷、答卷三個類來處理問題後、合理運用方法來處理相關問題後就可以完成所有問題,但是在這一題上就要開始使用正規表示式來處理問題,使得更好獲取及處理題目資訊,避免出現相關錯誤。
心得
第一次的大作業讓我初步瞭解使用的正規表示式,並且開始嘗試用物件導向的方法處理問題,使得題目的分析處理都更加簡化了,其中類的設計尤為重要,也花費了我很多時間去學習使用方法使用一些LinkedList方法,但這也給我帶來了很大的便利。
第二次大作業
類圖
耦合度
解釋
第二次大作業的最後一題在第一次大作業的基礎上新增了判分資訊,這隻需要對第一次大作業的類進行修改,新增分數Score屬性,然後新增相應方法對答案進行正誤判定,以及新增方法對得分進行記錄,同時對試卷總分判斷是否是100分,最後輸出判定資訊和結果;
心得
第二次大作業的最後一題需要對上次的進行修改,不僅僅是類的修改以及正規表示式的使用,還需要處理類間關係,需要改進,可是我在寫第一次的程式碼沒有注重類的設計導致寫的過程中出現了很多問題,使得我在寫的時候所有類都重新設計了,然後程式碼也相應的重寫了,最後花費了很多時間卻也沒有及格,是自己對程式碼的物件導向設計的不熟悉,是需要花費時間去學習和修改的。
第三次大作業
類圖
耦合度
解釋
第三次大作業在前兩次大作業的基礎上新增了學生資訊的輸入,還有答卷中也有學生的學號資訊,還有刪除題目的判斷,而且新增了是否存在答案(answer is null),題目被刪除(the question is invalid~0)、題目是否存在(non-exietnt question~0)、以及試卷是否存在,學生資訊是否存在(學號+not found)的判斷輸出。
心得
在第三次大作業的完成過程中,我發現程式碼雖然是在上一次的基礎上修改,但是我重寫了好多東西,類設計和方法的使用仍然不到位,完成度不是很理想,很多測試點無法透過,寫到最後都開始盲目亂寫,還是自己仍然沒有熟練掌握物件導向寫程式碼的技巧導致的,最後第三次大作業使用正規表示式和類設計的合理性都有待提高,部分測試點的透過都需要靠這些基礎知識的幫助,這是需要改進的。
- 踩坑心得
- 第二次大作業一開始試圖取巧採用startwith來匹配題目中的資訊,但是在後面除錯過程中會存在一些格式錯誤的資訊也會被匹配到,導致題目資訊獲取以及使用出現了錯誤,而後改了正規表示式才透過了相關除錯,讓我知道了正規表示式的重要。
- 在第三次大作業中沒有注重類的設計,將很多資訊放在了Main類中處理,本以為能夠處理好資訊,結果導致資訊過於冗雜,以至於後續處理問題時容易搞混,不得不加以改進。
- 第三次大作業中寫了正規表示式,但是沒有寫清楚,很多測試用例都需要正規表示式,一開始寫的比較少,後續多寫了幾個正規表示式進行判定,方便了題目資訊的獲取與使用
- 1~3次大作業寫的過程中一開始沒有考慮清楚,在對試卷類的設計中忘記考慮答案的型別,看測試用例以為只是整形而用int,後續除錯發現應該使用string型別來定義答案,而在匹配答案過程中也要改為equals來判斷。
- 第三次大作業過程中會出現答案不存在的情況,一開始出現以答卷為基礎開始和試卷資訊匹配導致答案不存在的情況匹配麻煩,改為了以試卷來匹配答卷,從而更好處理了這種情況;
- 改進建議
類與方法設計
在3次大作業中,類的設計任然存在一些不合理,對類資訊處理放在類中來進行,簡化了程式碼複雜度,將以下資訊放到相應的類中進行處理,然後再進行相關呼叫,使得後續只需要在這些程式碼的基礎上進行修改就可以了,同時Main類中使用迴圈判定,不然顯得Main類過於複雜,後續對程式碼的修改也不好改進。同時應該對類新增一些方法,在類中透過方法處理問題,透過在Main類中開始呼叫類的方法,開始處理處理相關問題,這樣就可以簡化Main類,不但使得程式碼排版看起來更加美觀,而且使得後續修改只需要在類的基礎上進行修改,比如答卷類的答案判斷就可以使用checkanswer方法,對答案進行比較,只需返回true或者false,然後再進行得分判斷,就可以更方便處理問題。
正規表示式的使用也是一個需要改進的點,在一些特殊題目的格式上需要一些修改正規表示式來獲取資訊,這是自己要去多加學習正規表示式的寫法和使用的。
- 總結
本階段三次題目集學習使用了ArrayList、LinkedList、HashMap等集合類,還有正規表示式的使用處理問題,以及理解使用了物件導向的方法分析問題,將問題轉化成多個類的形式,根據相應的屬性設計相應的方法,然後透過程式碼將各個類呼叫處理問題;但在這方面仍需要改進,在物件導向設計類的方面仍然不太擅長,總是在Main類處理多個問題是的Main類過於複雜,然後在正規表示式的寫法和使用上仍然不是很熟練,所以這方面仍然需要加強學習,觀看相關慕課,加強訓練,自己在這三次作業花費的時間還是少了,總是在最後兩三天的時間才開始寫,最後程式碼寫的匆忙,沒有充分考慮導致自己的程式碼完成度不高,最後不及格;對教師、課程、作業、實驗、課上及課下組織方式等方面我的建議是需要合理安排,在教師講完相關知識後要加強學生自主訓練才能有收穫,這是關鍵,而且這些我自己也要改進,要花費時間訓練才會有效果,不然遇到一些問題都不知道怎麼處理了。