zoukankan      html  css  js  c++  java
  • java四则运算随机产生式

    • 程序可接收一个输入参数n,然后随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算符在3个到5个之间。
    • 为了让小学生得到充分锻炼,每个练习题至少要包含2种运算符。同时,由于小学生没有分数与负数的概念,你所出的练习题在运算过程中不得出现负数与非整数,比如不能出 3/5+2=2.6,2-5+10=7等算式。
    • 练习题生成好后,将你的学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt中,不要输出额外信息,文件目录与程序目录一致。
    • 当程序接收的参数为4时,以下为输出文件示例。

      

    一、需求分析

    1. 程序接受一个输入参数n
    2. 随机产生n道四则运算题
    3. 运算数要求为:0和100之间
    4. 运算符要求为:3到5个之间
    5. 每个四则运算式中不能出现负数与小数
    6. 将最终产生的结果存储到txt文件中    

    二、功能设计

    1. 程序接受一个随机数number(3=<number<=5),随机产生number运算数与运算符。
    2. 程序由接受的n确定产生的运算式数量
    3. 程序将接受的运算数与运算符随机组合产生运算式
    4. 输出结果并将其存储到result.txt文件中

    三、设计实现

    1. 编写程序,接受一个数N,确定产生运算式的数量
    2. 产生随机数number(3到5之间),产生运算数与运算符
    3. 随机组合运算式与运算符,产生运算式
    4. 判断运算式是否合法,若不合法,将其进行修改
    5. 打印输出结果至result.txt文件

    四、测试运行

    窗口运行结果:

    测试结果存储至result.txt文件中:

     

    五、核心代码

     1        //存储运算符
     2             for(int j=0;j<arr_str.length;j++) {
     3                 if(arr_str[j]=='+'||arr_str[j]=='-'||arr_str[j]=='*'||arr_str[j]=='/') {    
     4                     arrString=String.valueOf(arr_str[j]);
     5                     arr_str[j]=',';
     6                     arrslist1.add(arrString);
     7                 }
     8             }
     9             //存储运算数
    10             String s = new String(arr_str);
    11             String[] ss = s.split(",");
    12             for(int k=0;k<ss.length;k++) {
    13                 arrslist2.add(ss[k]);
    14             }
    15             //生成运算式
    16             String[] arrs1 = arrslist1.toArray(new String[arrslist1.size()]);//运算符
    17             String[] arrs2 = arrslist2.toArray(new String[arrslist2.size()]);//运算数
    18             
    19             for(int m=0;m<arrs1.length;m++){
    20                 arrslist.add(arrs2[m]);//运算数
    21                 arrslist.add(arrs1[m]);//运算符
    22             }
    23             arrslist.add(arrs2[arrs2.length-1]);
    24             String[] arrs = arrslist.toArray(new String[arrslist2.size()]);//运算式

    //存储运算式
        //封装目的地
        public static void filewriter(ArrayList<String> arithList) throws IOException {
            //封装存储位置
            BufferedWriter BufferedWriterbw = new BufferedWriter(new FileWriter("result.txt"));
              BufferedWriterbw.write("201571030139");
              BufferedWriterbw.newLine();
              for(String s : arithList){
                    //写数据
                  try {
                    BufferedWriterbw.write(s+"="+js.eval(s));
                } catch (ScriptException e) {
                    e.printStackTrace();
                }
                  BufferedWriterbw.newLine();
                  BufferedWriterbw.flush();
              }
        }
        
        //判断是否产生负数与小数
        public static void  check_arith(String arr[]){
            for(int i=0;i<arr.length;i++){
                //判断是否产生负数    
                if(arr[i].contains("-")){
                    if(Integer.valueOf(arr[i-1])<Integer.valueOf(arr[i+1])){
                        arr[i]="+";
                    }
                }
                //判断是否产生小数
                if(arr[i].contains("/")){
                    int a = Integer.valueOf(arr[i-1]);
                    int b = Integer.valueOf(arr[i+1]);
                    int x = a%b;
                    if(x!=0){
                        arr[i]="+";
                    }
                }
            }
        }

    六、总结

    在本次的四则运算程序的设计与编写当中,我严格按照项目设计的一般步骤,有次序的进行程序的设计与编写,比起以前的拿到题目就编写程序的方式,节省了许多时间。再就是说一下本次的程序的难点:在产生运算式后,如何去判断再运算中是否产生了负数与小数,在出现之后如何将其转变的合理。

    七、展示PSP

    PSP2.1

    任务内容

    计划完成需要的时间(min)

    实际完成需要的时间(min)

    Planning

    计划

    20

    30

    ·       Estimate

    ·  估计这个任务需要多少时间,并规划大致工作步骤

    20

    30

    Development

    开发

    131

    255

    ··       Analysis

      需求分析 (包括学习新技术)

    10

    10

    ·       Design Spec

    ·  生成设计文档

    5

    10

    ·       Design Review

    ·  设计复审 (和同事审核设计文档)

    3

    6

    ·       Coding Standard

      代码规范 (为目前的开发制定合适的规范)

    3

    4

    ·       Design

      具体设计

    10

    15

    ·       Coding

      具体编码

    80

    200

    ·       Code Review

    ·  代码复审

    10

    10

    ·       Test

    ·  测试(自我测试,修改代码,提交修改)

    10

    10

    Reporting

    报告

    32

    52

    ··       Test Report

    ·  测试报告

    20

    40

    ·       Size Measurement

      计算工作量

    2

    2

    ·       Postmortem & Process Improvement Plan

    ·  事后总结 ,并提出过程改进计划

    10

    10

    • Github地址:https://github.com/gzyt/Arithmetic

  • 相关阅读:
    MySQL InnoDB 存储引擎探秘
    MySQL优化面试
    技术面试老是有劲使不出,该怎么办?
    详解RPC远程调用和消息队列MQ的区别
    ConcurrentHashMap1.8源码分析
    kafka topic制定规则
    GitLab本地、远程更新已经fork的项目
    Swagger2使用参考
    分布式配置中心选型
    搭建Elasticsearch平台
  • 原文地址:https://www.cnblogs.com/zhangtx-blog/p/8604289.html
Copyright © 2011-2022 走看看