1. 程式人生 > 其它 >nchu-software-oop-1-3總結

nchu-software-oop-1-3總結

(1)前言:在面向物件程式設計這門課程的學習過程開始後的一段時間,完成了三次相關的練習,現將這三次練習中遇到的一些問題,收穫的經驗等等總結如下。

第一次練習題目總結: 7-1 身體質量指數(BMI)測算 (10 分) 體重是反映和衡量一個人健康狀況的重要標誌之一,過胖和過瘦都不利於健康,BMI(身體質量指數)計算方法:體重(以千克為單位)除以身高(以米為單位)的平方。中國成人正常的BMI應在18.5-24之間,如果小於18.5為體重不足,如果大於等於24為超重,大於等於28為肥胖。請編寫程式,測算身體狀態。 難度為易,考察了double型別的輸入if else判斷條件的設計,數學函式的使用等知識點。 7-2 長度質量計量單位換算 (5 分)  長度、質量的計量有多重不同的計算體系,有標準的國際單位制:千克與米,也有各個國家自己的計量方法如:磅、英寸;1磅等於0.45359237千克,1英寸等於0.0254米,請編寫程式實現國際單位制與英制之間的換算。 難度為中,知識點考察同上。 7-3 奇數求和 (9 分)  計算一個數列中所有奇數的和。 難度為易,考察了用java遍歷的演算法的設計,陣列的使用的知識點。 7-4 房產稅費計算2022 (12 分) 房屋交易在日常生活中非常常見的事情,房屋交易時要額外支付各種稅費,按2022年房產交易新政策的規定買房人應繳納稅費包括:

1、契稅:首次購房評估額90平(含)內1%、90平-144平(含)內1.5%,超過144平或非首 次3%,買方繳納。2、印花稅:房款的0.05%。3、交易費:3元/平方米。4、測繪費:1.36元/平方米。5、權屬登記費及取證費:一般情況是在200元內。

難度為中,考察了if else判斷語句的使用,對題目判斷條件的分析,數學函式的使用以及如何正確輸出格式。 7-5 遊戲角色選擇 (14 分)  一款網遊中包括4個種族:人類、精靈、獸人、暗精靈,每個種族包含三種角色:戰士、法師、射手。玩家新建人物時需要選擇種族和角色。請編寫角色選擇程式。 難度為易。考察了java中switch語句的使用,println的使用。 7-6 學號識別 (10 分)  學校的學號由8位數字組成,前兩位是入學年份(省略了20);第3、4位是學院編號,01代表材料學院,02代表機械學院,03代表外語學院,20代表軟體學院;第5、6位是學院內部班級編號,最後兩位是班級內部學號。如:18011103,入學年份是2018年,材料學院,11班,03號 難度為中,考察了字串型別的一些提取子串,查詢子串方法的使用,以及利用這些方法對字串格式進行判斷,正確輸出格式等方面的知識。 7-8 巴比倫法求平方根近似值 (10 分)  巴比倫法求n的近似值可以用以下公式:nextGuess = (lastGuess+n/lastGuess)/2

程式初始執行時lastGuess可賦予一個最初的猜測值。當由公式求得的nextGuess和lastGuess相差較大時,把nextGuess的值賦給lastGuess,繼續以上過程,直至nextGuess和lastGuess幾乎相同,此時lastGuess或者nextGuess就是平方根的近似值。
本題要求:nextGuess和lastGuess的差值小於0.00001時認為兩者幾乎相同

難度為中,考察了java中對於給定的公式和判斷條件進行演算法設計的知識以及對數值的正確判斷。

7-9 二進位制數值提取 (10 分)  在一個字串中提取出其中的二進位制數值序列,。 難度為中,考察了對於字串判斷子串格式,內容,以及演算法設計方面的知識。 7-7 判斷三角形型別 (20 分)  輸入三角形三條邊,判斷該三角形為什麼型別的三角形。 難度為中,考察了對輸入的資料型別,資料是否符合要求的範圍,等的判斷,以及設計合理的if else語句進行篩查方面的知識。 第一次練習整體難度為中下,題量合理。   第二次練習題目總結: 7-1 字母-數字轉換 (11 分)  輸入一個由英文字母組成的字串(大小寫均可),將所有英文字母轉換成它們在字母表中的序號,例如:“AbbcD”轉換為“12234”。 難度為中,首先考察了對字串子串,單個字元格式,範圍方面進行判斷方面的知識。然後,可利用ascii值遍歷字串,強制轉換字元型別為整型便可以正確輸出結果。 7-2 串列埠字元解析 (40 分)  RS232是串列埠常用的通訊協議,在非同步通訊模式下,串列埠可以一次傳送5~8位資料,收發雙方之間沒有資料傳送時線路維持高電平,相當於接收方持續收到資料“1”(稱為空閒位),傳送方有資料傳送時,會在有效資料(5~8位,具體位數由通訊雙方提前設定)前加上1位起始位“0”,在有效資料之後加上1位可選的奇偶校驗位和1位結束位“1”。請編寫程式,模擬串列埠接收處理程式,注:假定有效資料是8位,奇偶校驗位採用奇校驗。 難度為中上,考察了對於演算法設計,字串子串分割方面的知識。 7-3 String的格式判斷與內容提取 (10 分)  學校學生學號格式定義如下:

2位年級號+2位學院號+2位班級號+2位序號,如19041103,
編寫程式處理用全院學生學號連線起來的長字串,學院編號為20,包括17、18、19、20四個年級,請從字串中提取特定兩個班級202017班、202061班同學的學號後四位輸出,輸出編號之間用空格分隔,不換行。
注意:需要排除非法輸入。

難度中上,仍然是考察字串子串,單個字元是否規範的判斷方面的知識。

第二次練習題目整體難度為中,題量合理。

  第三次練習題目總結: 7-1 點線形系列1-計算兩點之間的距離 (10 分)  輸入連個點的座標,計算兩點之間的距離 難度中上,因為這次要求不能只有一個類,必須分開職責,因此還考察瞭如何建立類與類之間的聯絡方面的知識。另考察了對字串格式方面的判斷,提取分離子串並轉換成double型別。 7-2 點線形系列2-線的計算 (42 分)  使用者輸入一組選項和資料,進行與直線有關的計算。選項包括:

1:輸入兩點座標,計算斜率,若線條垂直於X軸,輸出"Slope does not exist"。
2:輸入三個點座標,輸出第一個點與另外兩點連線的垂直距離。
3:輸入三個點座標,判斷三個點是否在一條線上,輸出true或者false。
4:輸入四個點座標,判斷前兩個點所構成的直線與後兩點構成的直線是否平行,輸出true或者false.
5:輸入四個點座標,計算輸出前兩個點所構成的直線與後兩點構成的直線的交點座標,x、y座標之間以英文分隔",",並輸出交叉點是否在兩條線段之內(不含四個端點)的判斷結果(true/false),判斷結果與座標之間以一個英文空格分隔。若兩條線平行,沒有交叉點,則輸出"is parallel lines,have no intersection point"。

難度為難,繼承了上一題的格式判斷,同時格式判斷更加繁瑣,演算法設計,類的設計更加複雜。 7-3 點線形系列3-三角形的計算 (48 分)  使用者輸入一組選項和資料,進行與三角形有關的計算。選項包括:

1:輸入三個點座標,判斷是否是等腰三角形、等邊三角形,判斷結果輸出true/false,兩個結果之間以一個英文空格符分隔。
2:輸入三個點座標,輸出周長、面積、重心座標,三個引數之間以一個英文空格分隔,座標之間以英文","分隔。
3:輸入三個點座標,輸出是鈍角、直角還是銳角三角形,依次輸出三個判斷結果(true/false),以一個英文空格分隔,
4:輸入五個點座標,輸出前兩個點所在的直線與三個點所構成的三角形相交的交點數量,如果交點有兩個,則按面積大小依次輸出三角形被直線分割成兩部分的面積。若直線與三角形一條線重合,輸出"The point is on the edge of the triangle"
5:輸入四個點座標,輸出第一個是否在後三個點所構成的三角形的內部(輸出in the triangle/outof triangle)。
必須使用射線法,原理:由第一個點往任一方向做一射線,射線與三角形的邊的交點(不含點本身)數量如果為1,則在三角形內部。如果交點有兩個或0個,則在三角形之外。若點在三角形的某條邊上,輸出"on the triangle"

難度為難,第三次練習題目的究極版本,較之第二題更為複雜,考察的內容同第二題。   第三次練習題目較為困難,需要花費大量時間,同時知識點考察更廣泛。   (2)設計與分析   題目集二: 7-1 字母-數字轉換 (11 分)  輸入一個由英文字母組成的字串(大小寫均可),將所有英文字母轉換成它們在字母表中的序號,例如:“AbbcD”轉換為“12234”。

使用ASCII值與強制型別轉換可以較為簡易的完成該題。

7-2 串列埠字元解析 (40 分)  RS232是串列埠常用的通訊協議,在非同步通訊模式下,串列埠可以一次傳送5~8位資料,收發雙方之間沒有資料傳送時線路維持高電平,相當於接收方持續收到資料“1”(稱為空閒位),傳送方有資料傳送時,會在有效資料(5~8位,具體位數由通訊雙方提前設定)前加上1位起始位“0”,在有效資料之後加上1位可選的奇偶校驗位和1位結束位“1”。請編寫程式,模擬串列埠接收處理程式,注:假定有效資料是8位,奇偶校驗位採用奇校驗。

接收字串,然後判斷是否達到規定的最短長度,再依次判斷奇偶性以及結束符,然後利用indexOf和charAt方法分割字串,再輸出。做完題目二後對分割字串,判斷字串內容有了更深刻的瞭解,利用indexOf和charAt方法可以較好的分割,判斷字串是否符合輸入要求。

題目集三:

7-1 點線形系列1-計算兩點之間的距離 (10 分)  輸入連個點的座標,計算兩點之間的距離

設計三個類,依次為Main,divede和check。check類檢查輸入的點是否符合個數要求,以及輸入的點是否符合格式。divide類分割字串,並且提取出4個double型別的浮點數,再將存有2個點的座標的double型別的陣列傳回Main類,在Main類中進行計算並輸出結果。

7-2 點線形系列2-線的計算 (42 分)  使用者輸入一組選項和資料,進行與直線有關的計算。選項包括:

1:輸入兩點座標,計算斜率,若線條垂直於X軸,輸出"Slope does not exist"。
2:輸入三個點座標,輸出第一個點與另外兩點連線的垂直距離。
3:輸入三個點座標,判斷三個點是否在一條線上,輸出true或者false。
4:輸入四個點座標,判斷前兩個點所構成的直線與後兩點構成的直線是否平行,輸出true或者false.
5:輸入四個點座標,計算輸出前兩個點所構成的直線與後兩點構成的直線的交點座標,x、y座標之間以英文分隔",",並輸出交叉點是否在兩條線段之內(不含四個端點)的判斷結果(true/false),判斷結果與座標之間以一個英文空格分隔。若兩條線平行,沒有交叉點,則輸出"is parallel lines,have no intersection point"。

 接收輸入的字串,並判斷輸入的格式是否符合題目的5個要求,如果符合,再判斷點的個數是否符合對應編號的個數要求,如果不符合,輸出對應的錯誤提示,如何符合,則進入對應的方法分割字串並傳入對應的座標到double陣列中,然後進入對應的方法計算並且根據不同的情況輸出結果。

7-3 點線形系列3-三角形的計算 (48 分)  使用者輸入一組選項和資料,進行與三角形有關的計算。選項包括:

1:輸入三個點座標,判斷是否是等腰三角形、等邊三角形,判斷結果輸出true/false,兩個結果之間以一個英文空格符分隔。
2:輸入三個點座標,輸出周長、面積、重心座標,三個引數之間以一個英文空格分隔,座標之間以英文","分隔。
3:輸入三個點座標,輸出是鈍角、直角還是銳角三角形,依次輸出三個判斷結果(true/false),以一個英文空格分隔,
4:輸入五個點座標,輸出前兩個點所在的直線與三個點所構成的三角形相交的交點數量,如果交點有兩個,則按面積大小依次輸出三角形被直線分割成兩部分的面積。若直線與三角形一條線重合,輸出"The point is on the edge of the triangle"
5:輸入四個點座標,輸出第一個是否在後三個點所構成的三角形的內部(輸出in the triangle/outof triangle)。
必須使用射線法,原理:由第一個點往任一方向做一射線,射線與三角形的邊的交點(不含點本身)數量如果為1,則在三角形內部。如果交點有兩個或0個,則在三角形之外。若點在三角形的某條邊上,輸出"on the triangle"

 

接收輸入的字串,並判斷輸入的格式是否符合題目的5個要求,如果符合,再判斷點的個數是否符合對應編號的個數要求,如果不符合,輸出對應的錯誤提示,如何符合,則進入對應的方法分割字串並傳入對應的座標到double陣列中,然後進入對應的方法計算並且根據不同的情況輸出結果。

 做完第三次練習的三道題後,對於正則表示式的運用有了一個大致的掌握,同時對於分割字串,將字串轉為double型別,設計不同的類,各司其職的方法,略有心得體會和收穫。    (3)採坑心得:    第一次練習: 7-7 判斷三角形型別 (20 分)  輸入三角形三條邊,判斷該三角形為什麼型別的三角形。  

如果將判斷條件改為0,則會出錯,因為java計算浮點數無法精確,只能以這種形式判斷三角形的形狀。

  第二次聯絡:  7-2 串列埠字元解析 (40 分)  RS232是串列埠常用的通訊協議,在非同步通訊模式下,串列埠可以一次傳送5~8位資料,收發雙方之間沒有資料傳送時線路維持高電平,相當於接收方持續收到資料“1”(稱為空閒位),傳送方有資料傳送時,會在有效資料(5~8位,具體位數由通訊雙方提前設定)前加上1位起始位“0”,在有效資料之後加上1位可選的奇偶校驗位和1位結束位“1”。請編寫程式,模擬串列埠接收處理程式,注:假定有效資料是8位,奇偶校驗位採用奇校驗  此題判斷存在問題,奇偶判斷不明確,測試點以及題幹給出的奇偶判斷存在矛盾。如圖:  

根據之前的測試資料以及題幹資訊可知,1才為奇偶判斷正確,但是此樣例以及某些測試點,0反而為奇偶判斷正確,題幹也未給出更詳細的資訊,不明覺厲。

 

第三次練習:

7-1 點線形系列1-計算兩點之間的距離 (10 分)  輸入連個點的座標,計算兩點之間的距離

通過點與點之間格式的特點,判斷,和空格的位置,藉此取出每個點的x,y座標並存入double陣列中的對應位置。

   (4)改進建議: 第一次練習: 7-1 身體質量指數(BMI)測算 (10 分) 測試點的邊界值判斷與題幹資訊不符合,建議修改題幹或測試點。 第二次練習: 7-2 串列埠字元解析 (40 分) 測試點中的奇偶性判斷與題幹所給出的資訊不符合,題幹明顯是說1才是正確的奇偶判斷,但是0在某些情況又反而對,不明覺厲。建議修改題幹或測試點。 第三次練習: 7-1 點線形系列1-計算兩點之間的距離 (10 分) 題幹給的資訊有點少,更多需要根據測試樣例判斷什麼是正確的輸入格式。建議可以在題幹多給點資訊。   (5)總結:   通過本階段的三次題目集,以及之後的總結,更好了理解了java中類、方法的設計,以及java中自帶的各種方法,對於面向物件程式設計的概念理解又加深了許多。 同時還存在許多不足之處,面向物件的過程還不甚熟練,很多時候還是保持著慣性思維,需要多加練習、學習以及研究。 老師,課程方面都很好,語言通俗易懂,概念深刻發人深省,作業雖然很難但是能讓人學到東西,並且課後感觸良多,令人感慨。