日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结

發布時間:2025/4/16 java 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

20172311『Java程序設計』課程 結對編程練習_四則運算第一周階段總結

結對伙伴

  • 學號 :20172307

  • 姓名 :黃宇瑭

  • 伙伴第一周博客地址: http://www.cnblogs.com/20172307hyt/p/8975967.html

需求分析

功能要求

1.自動生成題目

  • 可獨立使用(能實現自己編寫測試類單獨生成題目的功能)

  • 可生成不同等級題目,類似于:

    1級題目:2 + 5 =;
    10 - 5 =
    之類的兩個數,一個運算符的題目

2.題目運算(判題)

  • 可獨立使用

  • 實現中綴表達式轉為后綴表達式并計算

  • 判斷用戶答題正誤,并輸出正確結果

3.支持真分數

  • 可獨立使用

  • 實現分數算式的計算

3.題目去重(擴展需求,加分項)

  • 可獨立使用

  • 實現對自動生成表達式的去重:如下

    若生成:2 + 5 =;
    5 + 2 =
    為同一題目

    對需求的理解

    1.要有一個生成隨機題目的類,題目中的數可能分數,也可能是整數。 2.要有一個將中綴表達式轉化為后綴表達式的類
    3.要有一個計算后綴表達式的類
    4.要有一個判斷題目的類
    5.將以上類進行組合寫出產品代碼

    后續拓展的可能性

    具體的題目去重思路還沒有產生,問題應該不大。

    設計思路

  • NML類圖

  • 思路:
    要有一個能夠生成隨機最簡分數的類,并將它運用到生成隨機題目的類中去,同時生成的題目中數字和運算符之間要有一個空格符,方便在轉換為后綴表達式的時候使用棧。最后要實現交互,即讓客戶回答問題,然后系統判斷是否正確并告訴客戶。

    相關過程截圖

  • 生成隨機最簡分數的類Fraction

public class Fraction {int numerator, denominator;public Fraction() {numerator= (int) (Math.random()*51);denominator= (int) (Math.random()*51);if(denominator==0)denominator=1;reduce();}public void reduce() {if (numerator != 0) {int common = gcd(Math.abs(numerator), denominator);numerator = numerator / common;denominator = denominator / common;}}private int gcd(int num1, int num2) {while (num1 != num2)if (num1 > num2)num1 = num1 - num2;elsenum2 = num2 - num1;return num1;}public String getFraction(){String result;if(numerator==0)result="0";elseif(denominator==1)result=numerator+"";elseresult=numerator+"/"+denominator;return result;} }
  • 生成相應個數表達式的類Create
public class Create {String[]Arraylist;int num,rate;public Create(int num ,int rate){this.num=num;this.rate=rate;Arraylist=new String[num];}public String questionRate(int a){String express="";String[]OC={"+","-","×","÷"};for (int c=0;c<a;c++) {Fraction b = new Fraction();String d=b.getFraction();String e=OC[(int) (Math.random() * 4)];while (d=="0"&&e=="÷") {Fraction f=new Fraction();d = f.getFraction();}express +=d+" "+e+ " ";}Fraction c=new Fraction();String e=c.getFraction();while (express.charAt(4*rate-1)=='÷'&&e=="0"){Fraction d=new Fraction();e=d.getFraction();}express+=e+" "+"=";return express;}public void QuestionNum(){Create F=new Create(num,rate);for(int a=0;a<num;a++)Arraylist[a]=F.questionRate(rate);}public String[] getArraylist() {return Arraylist;}public String getArraylist2(int a){String b;b=Arraylist[a];return b;}public String toString() {String a="";for (int b=0;b<num;b++)a+=Arraylist[b]+"\n";return a;} }
  • 測試類CreateTest運行截圖

遇到的困難及解決方法

  • 剛開始編寫用于生成整數類型的題目的類時出現邏輯錯誤,導致運行測試類時出現越界。
  • 錯誤代碼截圖如下:

  • 測試類運行結果如下:

  • 改過后的代碼截圖如下:

  • 錯因分析:錯誤代碼中紅圈標記的區域便是錯誤所在,該語句創建了一個空數組,與本意創建一個存放num個String型表達式的數組相違背。從而出現越界的現象。而改過之后的代碼中是在構造函數中對數組進行了實例化,也就達到目的了。

對結對的小伙伴做出評價

結對小伙伴黃宇瑭童鞋的優點就是能夠很認真的傾聽我的一些想法,同時能夠對我的想法提出自己的補充建議,而且他非常的耐心,樂于助人,在我敲代碼敲累了的時候他會主動幫我接力。缺點的話可能就是在編寫代碼的時候對自己的要求不夠嚴苛,有時會出現一些輸入錯誤。整體上來說,與黃宇瑭童鞋的結對學習甚是愉快,希望在接下來的結對編程項目中再接再厲,共同進步!!

PSP時間統計

PSP2.1Personal Software Process Stages預估耗時(分鐘)實際耗時(分鐘)
Planning計劃6070
Estimate估計這個任務需要多少時間3030
Development開發600700
Analysis需求分析 (包括學習新技術)120180
Coding Standard代碼規范 (為目前的開發制定合適的規范)3020
Design UML設計項目UML類圖6090
Coding具體編碼180210
Code Review代碼復審180120
Test測試(自我測試,修改代碼,提交修改)120120
Size Measurement計算工作量(實際時間3020
Postmortem & Process Improvement Plan事后總結, 并提出過程改進計劃3060
合計14401620

轉載于:https://www.cnblogs.com/zhaoxiaohai/p/8976043.html

總結

以上是生活随笔為你收集整理的20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。