2017-2018-2 20172302 『Java程式設計』課程 結對程式設計練習_四則運算

來源:互聯網
上載者:User

標籤:val   inf   包括   return   rand   www.   odi   一個   中綴運算式   

1.結對對象

20172308周亞傑

2.本周內容需求分析
  • (1).自動產生題目
  • 可獨立使用(能實現自己編寫測試類別單獨產生題目的功能)
    可產生不同等級題目,類似於:
    1級題目:2 + 5 = 、10 - 5 = 之類的兩個數,一個運算子的題目

  • (2).題目運算(判題)
    可獨立使用,實現中綴運算式轉為尾碼運算式並計算;判斷使用者答題正誤,並輸出正確結果

  • (3).支援真分數
  • 可獨立使用,實現分數算式的計算

  • (4).題目去重(擴充需求,加分項)
  • 可獨立使用,實現對自動產生運算式的去重:如下若產生:2 + 5 = & 5 + 2 = 為同一題目

設計分析
  • 1.自動產生題目:這裡的題目的難度我是採用操作符的個數來定義的,根據操作符再產生操作符加一的數字(這裡暫時沒有編寫真分數的情況),然後使用迴圈進行產生,然後以字串形式輸出出來。

  • 2.中綴轉尾碼:這個代碼的編寫我們兩個是交流後各自獨立完成的,我採用的是那個使用操作符優先順序表產生二維數組,根據索引值進行判斷優先順序,決定操作符是入棧還是出棧,對於數字直接進行輸出,然後最後把棧裡所存的操作符再進行逐個輸出,完成尾碼運算式的輸出。

  • 3.尾碼求值:這裡是由寫一個方法:從左向右掃描尾碼運算式,遇到運算元進棧,遇到操作符則彈出棧頂的兩個元素,將結果計算出來再壓進棧,最後棧內剩餘一個元素即為最終答案

設計UML類圖(重點!!!)

UML類圖的設計見下:

遇到問題及解決方案代碼展示
  • 自動產生題目:
package arithmetic;import java.util.Random;import java.util.ArrayList;public class Questions{    ArrayList<Object> array = new ArrayList<Object>();    Random generator = new Random();    char [] newchar = {'+','-','*','/'};    protected int number;    int NUM;    public Questions()    {        number = 0 ;    }        public Object getQuestion(int num) {            int num1 = num;            while (num > 0) {                int figure = (int) generator.nextInt(9) + 1;                array.add(figure);                number = (int) (Math.random() * 4);                array.add(newchar[number]);                num--;            }            String obj = "";            while (num < 2*num1) {                obj += array.get(num);                num++;            }            int other = (int) generator.nextInt(9)+1;            array.add(other);            obj+=other+"=";            return obj;        }    }
  • 中綴轉尾碼:
package arithmetic;import java.util.Stack;public class test{    private int number,num1,num2;    private int value1,value2;    private int index=0;    private int[][] array = {{0,0,0,0,0},                                {0,1,1,-1,-1},                                {0,1,1,-1,-1},                                {0,1,1,1,1},                                {0,1,1,1,1}};    public String obj="2+1-2*2-2/1=";      Stack stack = new Stack();    public test()    {        num1=0;        num2=0;        value1=0;        value2=0;    }    public String getAnswer()    {        String result = "";        while (index<obj.length()-1)        {            char x = obj.charAt(index);            if(x>='0'&&x<='9')                result += x+" ";            else            {                switch (x)                {                    case '+':                        number = 1;                        break;                    case '-':                        number=2;                        break;                    case '*':                        number =3;                        break;                    case '/':                        number=4;                        break;                }                if(stack.empty()) {                    num1 = number;                    number = 0;                }                else                    {                        num2 = number;                        number=0;            }                if(array[num1][num2]<=0)                {                    stack.push(x);                    value1 +=1;                }                else                {                    result+=stack.pop();                    stack.push(x);                    value1 +=1;                    value2 +=1;                }            }            index++;            }        for(int y =0;y<value1-value2;y++)            result += stack.pop();        return result;    }}
  • 尾碼運算式求值:



3.PSP分析
PSP2.1 Personal Software Process Stages 預估耗時(分鐘)
Planning 計劃 60
Estimate 估計這個任務需要多少時間 3
Development 開發 2000 3000
Analysis 需求分析 (包括學習新技術) 350
Coding Standard 代碼規範 (為目前的開發制定合適的規範) 60
Design UML 設計項目UML類圖 60
Coding 具體編碼 1500
Code Review 代碼複審 30
Test 測試 (自我測試,修改代碼,提交修改) 300
Size Measurement 計算工作量(實際時間 ) 2 2
Postmortem & Process Improvement Plan 事後總結, 並提出流程改善計劃 30
合計 4395

2017-2018-2 20172302 『Java程式設計』課程 結對程式設計練習_四則運算

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.