作业要求地址:
github地址:
前言:
上软件工程课中出现了一道例子,即阿超做了一个简单的四则运算用于给他儿子出题,为了练手,将在于此模仿阿超将简单的四则运算做出来,该四则运算为初步版本,仅仅包含正整数的加减乘除,不包括括号。
题目要求:
任何编程语言都可以,命令行程序接受一个数字输入,然后输出相应数目的四则运算题目和答案。例如输入数字是 30, 那就输出 30 道题目和答案。 运算式子必须至少有两个运算符,运算数字是在 100 之内的正整数,答案不能是负数。 如:23 - 3 * 4 = 11
所用版本:
操作系统:windows10
开发环境:intellij IDEA
开发语言:java
实现思路:
让系统随机生成两个运算符,和生成三个数0-100的数,拼接成四则运算式。如果有/,则被除数不能为0,根据被除数,生成除数。
个人软件过程耗时估计与统计表:
Personal Software Process Stages | Time Senior Student | Time |
计划 | 2 | 3 |
估计这个任务需要多少时间 | 4 | 6 |
开发 | 1 | 2 |
需求分析 (包括学习新技术) | 0.5 | 0.5 |
生成设计文档 | 0.5 | 0.5 |
设计复审 | 0.5 | 0 |
代码规范 | 0 | 0.5 |
具体设计 | 0.5 | 0.5 |
具体编码 | 1 | 2 |
代码复审 | 0.5 | 0.5 |
测试(自我测试,修改代码,提交修改) | 0.5 | 0.5 |
报告 | 0.5 | 0.5 |
测试报告 | 0.5 | 0.5 |
计算工作量 | 2 | 2 |
并提出过程改进计划 | 1 | 1 |
实现代码:
public class Arithmetic { private static int a; private static int b; private static int c; private static String symbolA; private static String symbolB; public static void main(String[] args) { int result = 0; System.out.println("请输入题目数量:"); int scan = new Scanner(System.in).nextInt(); for (int i = 0; i < scan; i++) { a = (int) (Math.random() * 100); b = (int) (Math.random() * 100); c = (int) (Math.random() * 100); symbolA = randomSymbol(); symbolB = randomSymbol(); if (symbolA.equals("/")) { b = (int) (Math.random() * 100) + 1; a = b * ((int)(Math.random() * 100)); while (a > 100) { a = b * ((int)(Math.random() * 100)); } if(symbolB.equals("/")){ c = (int) (Math.random() * 100) + 1; while ((a/b)%c!=0){ c = (int) (Math.random() * 100) + 1; } } } if(symbolA.equals("*")&&symbolB.equals("/")){ c = (int) (Math.random() * 100) + 1; while ((a*b)%c!=0){ c = (int) (Math.random() * 100) + 1; } } if((symbolA.equals("+")||symbolA.equals("-"))&&symbolB.equals("/")){ c = (int) (Math.random() * 100) + 1; b = c * ((int)(Math.random() * 100)); while (b > 100) { b = c * ((int)(Math.random() * 100)); } } result = calculate(a, b, c, symbolA, symbolB); if (result < 0) { i--; continue; } String equaltion = a + symbolA + b + symbolB + c + "="; System.out.println(equaltion); if(result==new Scanner(System.in).nextInt()){ System.out.println("答案正确"); }else { System.out.println("答案错误"); System.out.println("正确答案是:"+result); } System.out.println(result); } System.out.println(calculate(1, 60, 49, "*", "/")); } public static int calculate(int a, int b, int c, String symbolA, String symbolB) { int result = 0; if ((symbolA.equals("+") || symbolA.equals("-")) && (symbolB.equals("*") || symbolB.equals("/"))) { if (symbolB.equals("*")) { result = (b * c); } else if (symbolB.equals("/")) { if(c==0) return -1; result = (b / c); } if (symbolA.equals("-")) { result = a - result; } else { result = a + result; } } else { if (symbolA.equals("+")) { result = (a + b); } else if (symbolA.equals("-")) { result = (a - b); } else if (symbolA.equals("*")) { result = (a * b); }else { if(b==0) return -1; // if(a
运行结果: