两人组成员:黄兴、谢孝淼
需求分析
1、选择运算方法:四则运算或混合运算
2、生成两组100以内随机整数及运算符号,并进行运算
3、输入结果与计算结果进行判断
若结果一致,则回答正确,选择继续或结束答题
若结果不一致,则回答错误,并显示正确答案,选择继续或结束答题
4、在选择继续或结束答题时,若连续两次输入错误,则答题结束
功能实现
1、开始运行,选择运算方法
System.out.println("*******题中有以下算法*******");
System.out.println("*1.基本运算 2.混合运算*");
System.out.println("*************************");
2、用Scanner类和Random类,产生随机数和随机运算符
Scanner sc = new Scanner(System.in); //创建Scanner类的对象 System.out.println("请选择:"); int h = sc.nextInt(); double result = 0; Random r = new Random(); //生成一个100以内随机数的方法 int a = r.nextInt(100); int b = r.nextInt(100); int c = r.nextInt(100); int d = r.nextInt(100); int e = r.nextInt(100); Random r2 = new Random(); int i = r2.nextInt(3) + 1; //另一个生成随机数1~4的方法 char chrs[] = { '+', '-', '*', '/' }; //将运算符号存到数组里 String.valueOf(chrs[i]);
3、用switch、case进行判断,并进行相应计算方法
switch(h){ //用switch,case进行判断,从而选择不同的运算方法 case 1: switch(i){ case 1:System.out.println("本题为:"+a+"+"+b+"=?"); //加法运算 result=a+b; break; case 2:System.out.println("本题为:"+a+"-"+b+"=?"); //减法运算 result=a-b; break; case 3:System.out.println("本题为:"+a+"*"+b+"=?"); //乘法运算 result=a*b; break; case 4:System.out.println("本题为:"+a+"/"+b+"=?"); //除法运算 float f = a; float g = b; if(g!=0){ result = f/g; } break; } break; case 2:System.out.println("本题为:("+a+"+"+b+")"+"/"+c+"-"+d+"*"+e+"=?");//固定模式的混合运算 if(c!=0){ result=(float)(a+b)/c-d*e; } break; default:System.out.println("输入有误,请重新输入!"); main(null); }
4、用if、else对结果进行判断
System.out.println("请输入您的答案:"); float jg = sc.nextFloat(); //将自算结果赋给jg if(jg==result){ //用if,else对结果进行判断,正确则继续,若错误则显示正确答案,然后继续 System.out.println("结果正确!"); System.out.println("请做如下选择:"); }else{ System.out.println("结果错误!"); System.out.println("本题正确答案为:"+result); System.out.println("请做如下选择:"); }
5、运用switch、case进行判断,进行下步选择
System.out.println("1.开始下一题 2.结束答题"); Scanner select = new Scanner(System.in); int se = select.nextInt(); switch(se){ //两层switch,case判断, case 1:main(null); //如果两次选择均输入错误,则结束程序 break; case 2:System.out.println("答题结束!"); break; default:System.out.println("输入有误,请重新输入!"); System.out.println("1.开始下一题 2.结束答题"); Scanner rp = new Scanner(System.in); int rt = rp.nextInt(); switch(rt){ case 1:main(null); break; case 2:System.out.println("答题结束!"); break; default:System.out.println("连续两次输入错误,答题结束!"); } }
运行结果显示
1、选择基本运算并回答正确
*******题中有以下算法******* *1.基本运算 2.混合运算* ************************* 请选择: 1 本题为:39-12=? 请输入您的答案: 27 结果正确! 请做如下选择: 1.开始下一题 2.结束答题
2、选择混合运算并回答错误
*******题中有以下算法******* *1.基本运算 2.混合运算* ************************* 请选择: 2 本题为:(59+87)/65-12*60=? 请输入您的答案: 32 结果错误! 本题正确答案为:-718.0 请做如下选择: 1.开始下一题 2.结束答题
3、计算后,若做选择时连续两次输入错误
*******题中有以下算法******* *1.基本运算 2.混合运算* ************************* 请选择: 2 本题为:(59+87)/65-12*60=? 请输入您的答案: 32 结果错误! 本题正确答案为:-718.0 请做如下选择: 1.开始下一题 2.结束答题 3 输入有误,请重新输入! 1.开始下一题 2.结束答题 3 连续两次输入错误,答题结束!
4、若选择开始下一题,则重新选择算法
若选择结束答题,则提示答题结束
Http: https://git.coding.net/yanzouzhe/szys.git
SSH: git@git.coding.net:yanzouzhe/szys.git
总结
收获:进一步掌握了Scanner输入方法和Random产生随机数的方法,结合数组的存储,通过if、else;switch、case判断,完成了简单的四则运算。
观看其他同学的设计,对自己也有了很大的启发
不足:1、方法步骤繁琐,可以进一步简化 2、除法算法有些小问题,遇到除不尽的数时计算结果无法用分数表示,自己输入的答案也无法用分数表示
3、混合运算模式固定为“("+a+"+"+b+")"+"/"+c+"-"+d+"*"+e+"=?”,应该优化为可以随机生成混合运算式子