标签:gem 体会 托管 tag center percent 多次 开始 static
IntNumber
类,用来实现整数的四则运算Fraction
类,用来实现真分数的四则运算Judgement
类,用来判断用户输入与实际计算值是否相等,并统计正确的次数import java.text.NumberFormat;
import java.util.*;
public class Calculate {
public static void main(String[] args) {
NumberFormat number = NumberFormat.getPercentInstance();
Random ran = new Random();
Scanner scan = new Scanner(System.in);
while (true) {
System.out.print("请输入要生成的题目数量:");
int A = scan.nextInt();
for (int i = 0; i < A; i++) {
int B = ran.nextInt(2);
int C = ran.nextInt(4);
IntNumber in1 = IntNumber.obj();
IntNumber in2 = IntNumber.obj();
Fraction score1 = Fraction.obj();
Fraction score2 = Fraction.obj();
if (B == 0) {//随机生成整数的计算题目
switch (C) {
case 0:
int num = in1.add(in2);
String num1 = "" + num;
int n = scan.nextInt();
Judgement.judge(n == num, num1);
break;
case 1:
num = in1.subtract(in2);
num1 = "" + num;
n = scan.nextInt();
Judgement.judge(n == num, num1);
break;
case 2:
num = in1.multiply(in2);
num1 = "" + num;
n = scan.nextInt();
Judgement.judge(n == num, num1);
break;
case 3:
num1 = in1.divide(score1);
String Q = scan.next();
Judgement.judge(Q.equals(num1), num1);
break;
}
} else {//随机生成真分数的计算题目
switch (C) {
case 0:
Fraction num2 = score1.add(score2);
String num1 = num2.toString();
String s = scan.next();
Judgement.judge(s.equals(num1), num1);
break;
case 1:
num2 = score1.subtract(score2);
num1 = num2.toString();
s = scan.next();
Judgement.judge(s.equals(num1), num1);
break;
case 2:
num2 = score1.multiply(score2);
num1 = num2.toString();
s = scan.next();
Judgement.judge(s.equals(num1), num1);
break;
case 3:
num2 = score1.divide(score2);
num1 = num2.toString();
s = scan.next();
Judgement.judge(s.equals(num1), num1);
break;
}
}
}
System.out.println("你答对的题目总数:" + Judgement.getTrues());
double T = (double) Judgement.getTrues() / A;//计算正确率
System.out.println("正确率为:" + number.format(T));
System.out.println("是否继续生成题目?(y/n):" );//多次生成题目,直到用户选择退出
String s1 = scan.next();
if (s1.equalsIgnoreCase("n")){
break;
}
}
}
}
IntNumber类的方法测试
Fraction类的方法测试
解决方法:上星期学了第八章常用实用类中学习过Random类,通过反复思考如何将书上给出的方法运用于实际,最终运用了
Random random = new Random()
random.nextInt()
并结合switch语句,成功实现生成随机数和题目nextInt(int m)
方法,即可返回[0,m)之间的某个整数解决方法:将主函数里核心部分放入while(true)循环中,当用户选择"n"即结束循环,通过equalsIgnoreCase("n"),比较两个字符串具有相同的字符,而不比较其大小即可
最开始我们看完题目要求后,都是一头雾水,不知道该从何下手,通过与刘香杉同学交流讨论,开始了我们的头脑风暴,先构建出基本的框架,再写出测试代码,一步一步的完成,在编程的过程中遇到了许多问题,比如如何实现真分数的运算,如何实现生成随机题目等等,最终通过我们的协作,完成了本次编程,收益很大,也体会到了结对编程的好处,当一个人构思出现瓶颈的时候,通过二人交流和相互的提示,会很快又有新的解决方案和想法,在编程的过程中,有语法的错误等等会互相检查和改正,达到了高效率的编程。
PSP | Personal Software Process Stages) | 预估耗时(分钟) | 实际耗时(分钟) | |
---|---|---|---|---|
Planning | 计划 | |||
Estimate | 估计这个任务需要多少时间 | 360 | 500 | |
Development | 开发 | |||
Analysis | 需求分析 (包括学习新技术) | 30 | 40 | |
Design Spec | 生成设计文档 | 30 | 35 | |
Design Review | 设计复审 (和同事审核设计文档) | 25 | 20 | |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 15 | 30 | |
Design | 具体设计 | 60 | 75 | |
Coding | 具体编码 | 180 | 255 | |
Code Review | 代码复审 | 30 | 25 | |
Test | 测试(自我测试,修改代码,提交修改) | 150 | 135 | |
Reporting | 报告 | |||
Test Report | 测试报告 | 20 | 25 | |
Size Measurement | 计算工作量 | 10 | 5 | |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 60 | 80 | |
合计 | 610 | 725 |
标签:gem 体会 托管 tag center percent 多次 开始 static
原文地址:https://www.cnblogs.com/tiankunye/p/8846839.html