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

    起初看到四则运算我一位只是作一个简易的计算器,当打开要求发现事情并无那么简单。而后就开始各类思考参考,想出相似于伪代码的一个框架,按照框架一步步实现,可是因为能力和学识的限制不少功能并不能很好的实现,或者无法实现没作出来。目前出来的算是勉强能够看的结果吧。后续还会接着改进。命令行

相关文章
相关标签/搜索