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

1.結對對象

20172308周亞傑html

2.本週內容

需求分析

  • (1).自動生成題目
  • 可獨立使用(能實現本身編寫測試類單獨生成題目的功能)
    可生成不一樣等級題目,相似於:
    1級題目:2 + 5 = 、10 - 5 = 之類的兩個數,一個運算符的題目java

  • (2).題目運算(判題)
    可獨立使用,實現中綴表達式轉爲後綴表達式並計算;判斷用戶答題正誤,並輸出正確結果數組

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

  • (4).題目去重(擴展需求,加分項)
  • 可獨立使用,實現對自動生成表達式的去重:以下若生成:2 + 5 = & 5 + 2 = 爲同一題目學習

設計分析

  • 1.自動生成題目:這裏的題目的難度我是採用操做符的個數來定義的,根據操做符再產生操做符加一的數字(這裏暫時沒有編寫真分數的狀況),而後使用循環進行產生,而後以字符串形式輸出出來。測試

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

  • 3.後綴求值:這裏是由寫一個方法:從左向右掃描後綴表達式,遇到操做數進棧,遇到操做符則彈出棧頂的兩個元素,將結果計算出來再壓進棧,最後棧內剩餘一個元素即爲最終答案設計

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

UML類圖的設計見下:
3d

遇到問題及解決方法

代碼展現

  • 自動生成題目:
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
相關文章
相關標籤/搜索