(第一周)小学四则运算
两人组成员:黄兴、谢孝淼
需求分析
1、选择运算方法:四则运算或混合运算
2、生成两组100以内随机整数及运算符号,并进行运算
3、输入结果与计算结果进行判断
若结果一致,则回答正确,选择继续或结束答题
若结果不一致,则回答错误,并显示正确答案,选择继续或结束答题
4、在选择继续或结束答题时,若连续两次输入错误,则答题结束
功能实现
1、开始运行,选择运算方法
       System.out.println("*******题中有以下算法*******");
		      System.out.println("*1.基本运算\t2.混合运算*");
		      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.开始下一题\t2.结束答题");
        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.开始下一题\t2.结束答题");
                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+"=?”,应该优化为可以随机生成混合运算式子
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号