1. 程式人生 > >軟件工程——第四次作業(3)

軟件工程——第四次作業(3)

一起 習慣 算法 ges 結對編程 問題 保留 清理 表達式

要求一

(1) 給出每個功能的重點、難點、編程收獲。(2)給出結對編程的體會(3) 至少5項在編碼、爭論、復審等活動中花費時間較長,給你較大收獲的事件。

答:(1)功能的重點、難點及編程收獲

a.對運算符的考慮。在此次編程中,運算符的處理是個難點。首先要考慮關於運算符的所有可能性,然後要考慮到這些運算符的優先級。

b.兩種情況的處理。是答題還是教師出題,教師出題時,對輸入題目數量是否符合要求的判斷。

c.考慮到括號的所有情況。考慮全面括號的所有情況,然後分門別類的進行表達式生成的處理。

d.計算時的後綴表達式。在計算時,因為涉及括號,要將中綴表達式轉換成後綴表達式,利用棧,一步一步地判斷是數字還是符號的情況。

e.計算時。後綴表達式存儲在棧中,是數字存儲在一個棧中,符號存儲在一個棧中,彈出數字,彈出符號,進行計算,計算的結果還要壓入棧中,作為下次運算的操作數。

f.格式控制的小細節。每個參與運算的數字,其實質都應該是double類型的,但是在顯示的時候要顯示成整數形式,這裏就要註意對數的處理。

(2)結對編程的體會。

當對方在為某個問題困擾時,在一旁觀看的自己就會覺得,是那裏那裏那裏的什麽什麽小問題,然後看著對方恍然大悟的樣子,覺得這時的兩個人就是一種互為補充,找到對方找不到的錯誤,提高了效率。遇到較難處理的情況時,兩個人都一籌莫展,當其中一個人想到某個方法思路時,要清晰地向另一個人闡述清楚,然後兩個人一起解決這個問題,會很有成就感。以前自己編程時很隨意,很長很長的一個方法也會寫在

main函數中,結對後,明晰了這樣做是不好的,不利於團隊開發,要在main函數中寫好調用方法,然後單獨寫這個方法,將大段大段長的代碼放到相應的方法中,這樣的開發習慣是良好的,利於以後的團隊開發。

(3)大收獲

a.剛開始的時候,面對這個題目是沒有思路的,因為不知道那四個符號要如何處理,這四個符號的優先級是不同的,並且如果再加入括號,感覺更難處理。通過查閱相關資料及討論,找到了一個運算符比較器的類,可以判定符號的優先級。

static Comparator<String> comp = new Comparator<String>(){}

b.對於有關括號的計算,要涉及到中綴式轉換成後綴式,使用棧,不斷判斷,不斷壓入棧內。

c.在討論括號情況時,要註意全面。

d.計算結果的時候,又一次使用棧,一個棧彈出操作數,一個棧彈出運算符。而自己對棧這樣的算法編程掌握的並不是很好。以前自己可以獨立地編寫一個小系統,還能運行,感覺很滿足,現在想一想,那時只是跟著老師,學習掌握java中很小一部分適於開發編程的知識,對於像數據結構中例如堆棧這樣的偏算法類的編程,掌握的少之又少,以後應該多加強自己在這方面的學習,去學習一些經典的算法和常用的類似此次編程中的轉換成後綴式的方法。

e.細節處理。在大體完成後,每次手動運行程序進行檢測時,不是出現顯示格式不對的問題,就是出現小數結果沒有按照要求進行位數保留的問題,尤其在處理運算的四個數時,其本質類型為double,是為了得到最後準確的結果,但是題目顯示時,要註意顯示成int型,像這樣的小細節,還有很多很多,直接決定程序的好還,所以要多多註意。

要求二

給出照片1張,包括結對的2位同學、工作地點、計算機,可選項包括其他能表達結對編程工作經歷的物品或場景。

照片:

技術分享

結對同學:王航,李傳康

工作地點:圖書館

計算機:華碩筆記本

要求三

使用coding.net做版本控制。checkin 前要求清理 臨時文件、可執行程序,通常執行 build-clean可以達到效果。

git代碼

鏈接地址:https://git.coding.net/lick468/f4.git

程序缺陷:

重復題目的判斷(未完成),雖然花了很長時間討論,但是沒有完成。

代碼運行截圖:

技術分享

圖一:判斷輸入的題目數量是否為正整數

技術分享

圖二:根據輸入的數量生成題目

技術分享

圖三:生成的題目(.txt文件)

技術分享

圖四

技術分享

圖五

技術分享

圖六

圖四、圖五、圖六:題目作答情況

軟件工程——第四次作業(3)