zoukankan      html  css  js  c++  java
  • (第一周)小学四则运算

    两人组成员:黄兴、谢孝淼

    需求分析

    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+"=?”,应该优化为可以随机生成混合运算式子

  • 相关阅读:
    每日博客
    每日博客
    每日博客
    每日博客
    每日博客
    每日博客
    每日博客
    每日博客
    centos7 systemctl 管理MySQL
    Postgresqlz之迁移数据pg_dump
  • 原文地址:https://www.cnblogs.com/huangxman/p/5847322.html
Copyright © 2011-2022 走看看