基于控制台的四则运算
Coding地址:https://coding.net/u/ttoyy/p/java-sizeyunsuan/git
一、题目简介
- 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
- 运算符为 +, −, ×, ÷
- 并且要求能处理用户的输入,并判断对错,打分统计正确率。
- 要求能处理用户输入的真分数, 如 1/2, 5/12 等
- 使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目Myapp.exe -n 10
二、需求分析
编写一段程序,能够输出小学四则运算的题目,并且支持真分数的操作,同时能够对用户输入的答案判定正确与否,给出成绩,最后统计正确率。
三、功能设计
①用户能自定义此次题目的数量;
②能够输出四则运算题目,并支持真分数的运算;
③能对答案进行判定,给出分数与正确率。
四、设计实现
为实现功能,编写了一个java程序,采用循环算法和随机数实现。
五、代码说明[view code]
System.out.printf("请输入本次测试的题目数:");
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(); //获取用户所需的题目数
System.out.printf("本次测试的题目数为:"+ N +"\n");
for(int i=0;i<N;i++){ //根据获取的题目数循环
int x=(int)(Math.random()*7);//获取随机数
switch(x){ //根据随机数调用某种运算 如0是加法
case 0: //整数的加法运算
int a1=(int)(Math.random()*100);
int b1=(int)(Math.random()*100);
System.out.print(a1+"+"+b1+"=");
Scanner sc1 = new Scanner(System.in);
int c1=sc1.nextInt();
if(c1!=a1+b1)System.out.printf("回答错误"+"\n"); //验证输入答案的准确性
else System.out.printf("回答正确"+"\n");sum =sum+1;break;
System.out.printf("测试结束,最后得分为:"+sum+"分"+"\n");//给出本次测试的分数
System.out.printf("正确率为:"+sum+"/"+N); //给出本次测试的正确率
调试情况:
PSP2.1 |
Personal Software Process Stages |
Estimated time(min) |
actual time(min) |
Planning |
计划 |
10 |
10 |
· Estimate |
估计这个任务需要多少时间 |
180 |
180 |
Development |
开发 |
80 |
90 |
· Analysis |
需求分析 (包括学习新技术) |
10 |
10 |
· Design Spec |
生成设计文档 |
10 |
10 |
· Design Review |
设计复审 |
5 |
5 |
· Coding Standard |
代码规范 |
5 |
5 |
· Design |
具体设计 |
30 |
40 |
· Coding |
具体编码 |
60 |
60 |
· Code Review |
代码复审 |
10 |
15 |
· Test |
测试(自我测试,修改代码,提交修改) |
15 |
15 |
Reporting |
报告 |
30 |
35 |
· |
测试报告 |
5 |
5 |
· |
计算工作量 |
5 |
7 |
· |
并提出过程改进计划 |
5 |
10 |
总结:
1、编程中,真分数的算法耗费了大量时间,并且还存在问题,不知如何解决。真分数的算法存在问题,是用字符串解决的,不能用小数输入并且无法约分;
2、整数除法的算法尚有漏洞,只能输入小数,遇到除不尽的无法运算;
3、编程过程不够仔细,其中少了一个break,导致调试出现问题,检查好久才发现;
4、经过本次编程,深知自己编程能力实在差,需要继续加强。