用Java随机生成四则运算

代码链接:https://github.com/devilwjy/Code.Demo

需求分析:

1.程序可接收一个输入参数n,然后随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算符在3个到5个之间。

2.每个练习题至少要包含2种运算符。

3.练习题在运算过程中不得出现负数与非整数,比如不能出 3/5+2=2.6,2-5+10=7等算式。

4.练习题生成好后,将学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中,不要输出额外信息,文件目录与程序目录一致。

当程序接收的参数为4时,以下为输出文件示例:

 

功能设计:

1.从键盘输入一个数值,并生成相应数量的四则运算练习题。

2.数值的范围为1到100,运算符的范围是+,-,*,/。

3.数值的个数为3个,运算符的个数为2个。

4.运算过程中不得出现负数与非整数。

5.将学号、生成的四则运算练习题并及计算答案输出到名为“Result.txt”的文档中。

设计实现:

     

测试运行:

   

核心代码:

以第一个运算符为“/”为例

 1 //第一个运算符为“/”
 2                 else{
 3                     if(data1%data2==0 && data2!=0)//判断data1能否被data2整除,且除数data2不能为0
 4                     {
 5                         if(operator[num2]=="+")//乘除的优先级高于加减,所以可以顺着往下计算
 6                         {
 7                             result=data1/data2+data3;
 8                             System.out.println(str+"="+result);
 9                             
10                         }
11                         else if(operator[num2]=="-")
12                         {
13                             if(data1/data2>=data3)//判断data1/data2的商是否大于data3
14                             {
15                                 result=data1/data2-data3;
16                                 System.out.println(str+"="+result);
17                                  
18                             }
19                             else{
20                                 number++;//不符合条件就将表达式的个数加1,进行下一个表达式的计算
21                             }
22                         }
23                         else if(operator[num2]=="*")
24                         {
25                             result=data1/data2*data3;
26                             System.out.println(str+"="+result);
27                             
28                         }
29                         else{
30                             int result1=data1/data2;
31                             if(result1%data3==0 && data3!=0)//判断data1/data2的商能否整除data3,且data3不能为0
32                             {
33                                 result=data1/data2/data3;
34                                 System.out.println(str+"="+result);
35                                 
36                             }
37                             else{
38                                 number++;
39                             }
40                         }
41                     }
42                     else{
43                         number++;
44                     }
45                 }

总结:

本次实验我的实现过程很简单,而且有很大的局限性,只能生成含有三个数、两个运算符的四则运算练习题。一开始我的想法是将随机生成的四则运算放在一个字符串里,根据逆波兰式运算,将中缀表达式转换成后缀表达式,然后存储在栈中,但是最后没能成功,只好用一种极为简单的方式实现这个实验。说来有些惭愧,有点投机取巧之嫌,不过我的编程能力很差,纵然仔细研究了网上博客中的代码,还是写不出想要实现的方法。虽然很遗憾,但我也只能做到这儿了,不能说问心无愧,只能表明以前用的功太少了,以后回尽力改正,养成良好的习惯。

PSP

任务内容

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

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

Planning

计划

10

12 

Estimite

估计任务所需时间,并规划大致工作步骤

10 

15 

Development

开发

100 

120 

Analysis

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

Design Spec 

生成设计文档 

6

Design Review 

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

6

Coding Standard 

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

Design 

具体设计 

12 

14 

Coding 

具体编码 

40 

46 

Code Review 

代码复审 

12 

15 

Test 

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

15 

12 

Reporting 

报告 

12 

10 

Test Report 

测试报告 

Size Measurement

计算工作量

3

Postmortem & Process Improvement Plan 

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

 

原文地址:https://www.cnblogs.com/devilwjy/p/8612630.html