20162302 - 20162319 結對編程項目-四則運算(第一週)

結對編程項目-四則運算(第一週)

  • 需求分析

一、支持四則運算(加減乘除)算式的生成
二、支持對於所生成的題目給與答案解析
三、能夠讓用戶做答而且判斷答案是否正確
四、能夠統計正確率
五、支持括號
六、支持真分式(本週未實現)java

  • 設計思路

  • 首先要有一個部分負責算式的生成(四則運算類和算式生成類)

    四則運算類:負責數字和符號的生成
import java.util.Random;

public class 四則運算 {
    int 符號編碼, 數字;
    String 符號;
    Random 符號隨機 = new Random();
    Random 數字隨機 = new Random();
    public 四則運算() {
    }
    public String 生成符號(){
        符號編碼 = 符號隨機.nextInt(4);
        符號解析(符號編碼);
        return 符號;
    }
    public int 生成數字(){
        數字 = 數字隨機.nextInt(100);
        return 數字;
    }
    public void 符號解析(int a){
        if (a==0)
            符號 = "+";
        else if(a==1)
            符號 = "-";
        else if (a==2)
            符號 = "*";
        else if (a==3)
            符號 = "/";
    }
    public String toString(){
        return 數字+符號;
    }
}

算式生成器:是四則運算類的子類,負責調用父類的方法根據用戶的需求以字符串的形式生成單個算式git

import java.text.DecimalFormat;

public class 生成算式 extends 四則運算 {
    int 階數, 數字;
    String 算式, 符號;
    DecimalFormat fmt = new DecimalFormat("0");

    public 生成算式 (int n){
        階數 = n;
        生成(階數);
    }
    public String 生成(int j){
        數字 = 生成數字();
        算式 = fmt.format(數字);
        算式 = 算式.concat(" ");
        for(int i=1; i<j; i++){
            符號 = 生成符號();
            算式 = 算式.concat(符號+" ");
            數字 = 生成數字();
            算式 = 算式.concat(fmt.format(數字)+" ");
        }
        return 算式;
    }
    public String toString(){
        return 算式;
    }
}
  • 而後是運算式子的類,使其能夠生成以便於判斷答案(算式運算器類和格式轉換器類)

    算式運算器:使用到了棧的方法能夠運算後綴表達式,在更新之後又能夠做爲格式轉換器的子類進行一步轉換並運算,使其也能夠支持前綴表達式。
    格式轉換器:專門用於轉換中綴式爲後綴式的類。
代碼篇幅過大
轉換和運算都要用到棧

格式轉換器編程

  • 最後要有驅動器

    驅動器:負責調用運算器和生成器達到生成算式和答案的目的。在命令行裏面輸出算式,而後由用戶來做答,系統能夠判斷答案是否正確並給出正確率。
import java.util.Scanner;
import java.text.NumberFormat;

public class 驅動器 {
    public static void main (String[] args){
        int 正確個數=0;
        Scanner scan = new Scanner(System.in);
        NumberFormat 百分比形式 = NumberFormat.getPercentInstance();
        生成算式 a = new 生成算式(2);
        算式運算器 s = new 算式運算器();
        格式轉換器 g = new 格式轉換器();

        String b = a.生成(2);
        String b1 = g.stringToArithmetic(b);
        int answer1 = s.運算(b1);
        System.out.print(b+"= ");
        int Answer1 = scan.nextInt();
        if (answer1 == Answer1) {
            System.out.println("√");
            正確個數 ++;
        }
        else
            System.out.println("×");


UML圖dom

  • Junit測試

    JUnit測試中綴表達式轉化爲後綴表達式的轉換器

    JUnit測試兩種引用(直接引用轉換並計算和分步驟轉換和計算)方式答案是否同樣
    測試

  • 運行截圖

  • 合做夥伴

  • 姓名:莫禮鍾
  • 學號:20162319
  • 博客連接:點擊此處→編碼

相關文章
相關標籤/搜索