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

需求分析

題目要求

一個命令行程序實現:java

  • 自動生成小學四則運算題目(加、減、乘、除)
  • 支持整數
  • 支持多運算符(好比生成包含100個運算符的題目)
  • 支持真分數
  • 統計正確率git

    需求理解

    1. 輸入:須要計算的式子數、計算結果

      輸出:判斷後的答案(true/false)
    2. 知足真分數的運算如:1/3 + 1/4 = 7/12
    3. 處理的運算符爲 +, −, ×, ÷
    4. 能處理用戶的輸入,並判斷對錯,統計正確率。
中綴表達式轉換爲後綴表達式

法則:框架

  • 若是遇到數字,咱們就直接將其輸出。
  • 若是遇到非數字時,若棧爲空或者該符號爲左括號或者棧頂元素爲括號,直接入棧。
  • 若是遇到一個右括號,持續出棧並輸出符號,直到棧頂元素爲左括號,而後將左括號出棧(注意,左括號只出棧,不輸出),右括號不入棧。
  • 若是遇到運算符號且棧非空,查看棧頂元素,若是棧頂元素的運算優先級大於或者等於該運算符號,則持續出棧,直到棧頂元素優先級小於該運算符。最後將該元素入棧。
  • 若是咱們讀到了輸入的末尾,則將棧中全部元素依次彈出。

測試說明

產品代碼主要進行三個方面的測試:dom

  • 正常測試
  • 異常測試
  • 邊界測試

實驗過程

  • 首先要有一個方法類實現計算方法
  • 而後再有一個類做爲錯誤判斷測試輸出。測試

  • 核心代碼:加減乘除的運算
  • import java.util.Random;
    
    public class Output {
    
        private int a, b;
        private int i;
        private String operator[]={"+","-","×","÷"};
    
        public Output(){
    
            while(true){
    
                a=new Random().nextInt(100);
                b=new Random().nextInt(100);
                i=new Random().nextInt(4);
    
                if(i==1&&a<b){
                    continue;
                }
    
                if(i==3){
                    if(b==0){
                        continue;
                    }
                    if(a%b!=0){
                        continue;
                    }
                }
                break;
            }
        }
    
        public String getString(){
            return new String(a+operator[i]+b+"=");
        }
    
        public  boolean panduan(String s){
            int i,result = 0;
            try{
                i=Integer.valueOf(s).intValue();
            }catch(Exception e){
                return false;
            }
    
            switch(this.operator().toCharArray()[0]){
                case '+':result=this.getA()+this.getB();break;
                case '-':result=this.getA()-this.getB();break;
                case '×':result=this.getA()*this.getB();break;
                case '÷':result=this.getA()/this.getB();break;
            }
    
            if(result==i){
                return true;
            }return false;
        }
    
        public String operator(){
            return operator[this.i];
        }
    
        public int getA() {
            return a;
        }
    
        public int getB() {
            return b;
        }
    }
    

    碼雲託管  

    運行測試

  • 結對搭檔

    搭檔:20165231王楊鴻永this

    起初看到四則運算我一位只是作一個簡易的計算器,當打開要求發現事情並無那麼簡單。而後就開始各類思考參考,想出相似於僞代碼的一個框架,按照框架一步步實現,可是因爲能力和學識的限制不少功能並不能很好的實現,或者無法實現沒作出來。目前出來的算是勉強能夠看的結果吧。後續還會接着改進。命令行

相關文章
相關標籤/搜索