需求分析

题目要求

一个命令行程序实现:

  • 自动生成小学四则运算题目(加、减、乘、除)
  • 支持整数
  • 支持多运算符(比如生成包含100个运算符的题目)
  • 支持真分数
  • 统计正确率

    需求理解

    1. 输入:需要计算的式子数、计算结果

      输出:判断后的答案(true/false)

    2. 满足真分数的运算如:1/3 + 1/4 = 7/12
    3. 处理的运算符为 +, −, ×, ÷
    4. 能处理用户的输入,并判断对错,统计正确率。
中缀表达式转换为后缀表达式

法则:

  • 如果遇到数字,我们就直接将其输出。
  • 如果遇到非数字时,若栈为空或者该符号为左括号或者栈顶元素为括号,直接入栈。
  • 如果遇到一个右括号,持续出栈并输出符号,直到栈顶元素为左括号,然后将左括号出栈(注意,左括号只出栈,不输出),右括号不入栈。
  • 如果遇到运算符号且栈非空,查看栈顶元素,如果栈顶元素的运算优先级大于或者等于该运算符号,则持续出栈,直到栈顶元素优先级小于该运算符。最后将该元素入栈。
  • 如果我们读到了输入的末尾,则将栈中所有元素依次弹出。

测试说明

产品代码主要进行三个方面的测试:

  • 正常测试
  • 异常测试
  • 边界测试

实验过程

  • 首先要有一个方法类实现计算方法
  • 然后再有一个类作为错误判断测试输出。

  • 核心代码:加减乘除的运算
  • 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王杨鸿永

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

2017-2018-2 20165220『Java程序设计』课程 结对编程练习_四则运算的更多相关文章

  1. 2017-2018-2 165X 『Java程序设计』课程 结对编程练习_四则运算

    2017-2018-2 165X 『Java程序设计』课程 结对编程练习_四则运算 经过第一阶段的学习,同学们已经熟悉了这门语言基本的用法.在一次又一次对着电脑编写并提交代码,进行练习的时候,有没有觉 ...

  2. 2017-2018-2 20172310『Java程序设计』课程 结对编程练习_四则运算_第二周

    2017-2018-2 20172310『Java程序设计』课程 结对编程练习_四则运算_第二周 博客要求 组内同学需各自发表博客 博客中需包含以下内容: 相关过程截图 关键代码解释 遇到的困难及解决 ...

  3. 2017-2018-20172309 『Java程序设计』课程 结对编程练习_四则运算_第三周

    2017-2018-20172309 『Java程序设计』课程 结对编程练习_四则运算 组队成员: 仇夏 学号: 20172310 博客地址: @王志伟 四则运算第一周博客 @仇夏四则运算第一周博客 ...

  4. 2017-2018-20172309 『Java程序设计』课程 结对编程练习_四则运算——第一周

    2017-2018-20172309 『Java程序设计』课程 结对编程练习_四则运算 组队成员: 仇夏 学号: 20172310 博客地址:点击这里 1. 需求分析: 可生成题目: - 输入要想生成 ...

  5. 2017-2018-2 20165225『Java程序设计』课程 结对编程练习_四则运算

    2017-2018-2 20165225『Java程序设计』课程 结对编程练习_四则运算 需求分析: 支持整数,可进行多运算符运算,有优先级. 设计思路: 在有括号的情况下,先计算得出括号中的结果,如 ...

  6. 20172325『Java程序设计』课程 结对编程练习_四则运算第三周阶段总结

    20172325『Java程序设计』课程 结对编程练习_四则运算第三周阶段总结 结对伙伴 学号:20172306 姓名:刘辰 在这次项目的完成过程中刘辰同学付出了很多,在代码的实践上完成的很出色,在技 ...

  7. 20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结

    20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结 结对伙伴 学号 :20172307 姓名 :黄宇瑭 伙伴第一周博客地址: http://www.cnblogs.com/ ...

  8. 20172311『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结

    20172311『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结 结对伙伴 学号 :20172307 姓名 :黄宇瑭 伙伴第一周博客地址 对结对伙伴的评价:黄宇瑭同学的优势在于能够想出一 ...

  9. 20172313『Java程序设计』课程结对编程练习_四则运算第二周阶段总结

    20172313『Java程序设计』课程结对编程练习_四则运算第二周阶段总结 结对伙伴 20172326康皓越 博客地址(http://www.cnblogs.com/326477465-a/p/90 ...

随机推荐

  1. 2018年Android的保活方案效果统计

    一.常见保活方案 1.监听广播:监听全局的静态广播,比如时间更新的广播.开机广播.解锁屏.网络状态.解锁加锁亮屏暗屏(3.1版本),高版本需要应用开机后运行一次才能监听这些系统广播,目前此方案失效.可 ...

  2. swift 学习- 21 -- 类型转换

    // 类型转换 可以判断实例的类型, 也可以将实例看做其父类的或者子类的实例 // 类型转换在 Swift 中使用 is 和 as 操作符实现, 这两个操作符提供了一种简单达意的方式去检查值的类型 或 ...

  3. C# TTS 文字和英文

    using System;using System.Globalization;using System.Linq;using System.Speech.Synthesis;using System ...

  4. 银联支付java版

    注:本文来源于:<  银联支付java版    > 银联支付java版 2016年09月18日 15:55:20 阅读数:2431 首先去银联官网注册测试支付账户   下载对应的demo[ ...

  5. Confluence 6 home 目录中的内容

    Confluence home 目录存储了 Confluence 在运行中所使用的数据.下面对 Confluence home 目录中使用的数据和文件进行一些说明: confluence.cfg.xm ...

  6. Confluence 6 外部小工具在其他应用中设置可信关系

    为了在你的 Confluence 中与其他应用建立外部小工具,我们建议你在 2 个应用之间设置 OAuth 或者信任的应用连接关系.在这个例子中,外部应用为小工具的服务器(服务器提供者)和 Confl ...

  7. <a>之间怎么放值</a> 挺简单的,第一次遇到···

    需求描述:对列表中的某一列内容添加a标签(其实就是对td标签下添加a标签了). 思路简介:拿到这个我首先的反应就是在td标签对text获取内容的代码中动态拼接<a></a>字符 ...

  8. cf1121d 尺取

    尺取,写起来有点麻烦 枚举左端点,然后找到右端点,,使得区间[l,r]里各种颜色花朵的数量满足b数组中各种花朵的数量,然后再judge区间[l,r]截取出后能否可以供剩下的n-1个人做花环 /* 给定 ...

  9. 安装mysql后在/var/log/mysqld.log 中找不到临时密码

    centos7通过yum装完mysql,使用grep 'temporary password' /var/log/mysqld.log找不到root密码打开mysqld.log中根本没有tempora ...

  10. Python中对文件和目录的操作

    用到的核心模块有:os   shutil 文件的创建:f = open("文件名", "w")  注:如果涉及到乱码问题需要在后面加上encoding=&quo ...