JAVA实现简单的四则运算


GitHub 项目地址

https://github.com/745421831/-/tree/master


 

PSP

 

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

10

20

· Estimate

· 估计这个任务需要多少时间

10

10

Development

开发

360

600

· Analysis

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

30

40

· Design Spec

· 生成设计文档

30

40

· Design Review

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

10

15

· Coding Standard

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

5

5

· Design

· 具体设计

40

80

· Coding

· 具体编码

300

500

· Code Review

· 代码复审

60

120

· Test

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

180

120

Reporting

报告

120

60

· Test Report

· 测试报告+博客

120

120

· Size Measurement

· 计算工作量

10

10

· Postmortem & Process Improvement Plan

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

40

30

合计

 

1325

1770

 

项目要求

 

  • 能自动生成小学四则运算题目
  • 除了整数以外,还要支持真分数的四则运算

 

解题思路

  • 了解四则运算的基本法则
  • 利用随机函数随机生成数字以及运算符
  • 用户输入答案程序需要判断答案是否正确
  • 支持真分数运算

 

设计实现及代码说明

      1、Arithmetic.java

        主函数

 

 1 package jisuanwork;
 2 
 3 import java.util.Scanner;
 4 
 5 public class Arithmetic {
 6     public static void main(String[] args) {
 7         Scanner scanner = new Scanner(System.in);
 8         System.out.println("请输入产生几以内的数字:");
 9         int num = scanner.nextInt();
10         System.out.println("请输入产生多少道题目:");
11         int t = scanner.nextInt();
12         Subject subject = new Subject();
13         subject.set(num, t);
14         
15     }
16 }

 

         2、Subject.java

               随机生成的四则运算表达式

  1 package jisuanwork;
  2 
  3 import java.util.Random;
  4 import java.util.Scanner;
  5 
  6 public class Subject {
  7     void set (int num , int t){
  8         Random random = new Random();
  9         Scanner scanner = new Scanner(System.in);
 10         JiSuan j = new JiSuan();
 11         
 12         String arithmetic[] = new String[t];
 13         for(int i = 0 ; i < t ; i++) {
 14             int a = (int)random.nextInt(num);//分子
 15             int b = (int)random.nextInt(num);//分母
 16             int c = (int)random.nextInt(num);//另一个分子
 17             int d = (int)random.nextInt(num);//另一个分母
 18             int fuhao = random.nextInt(4);//0代表+,1代表-,2代表乘,3代表除
 19             if(b!=0 && d!=0) {
 20                 if(fuhao==0) {
 21                     int fenzi = a*d + b*c;
 22                     int fenmu = b*d;
 23                     arithmetic[i] = biaodashi(a,b) + '+' + biaodashi(c,d) + '=';
 24                     System.out.println((i+1)+":"+arithmetic[i]);
 25                     j.anw(fenzi, fenmu);
 26                     
 27                 }
 28                 if(fuhao==1 && a*d - b*c >= 0) {
 29                     int fenzi = a*d - b*c;
 30                     int fenmu = b*d;
 31                     arithmetic[i] = biaodashi(a,b) + '-' + biaodashi(c,d) + '=';
 32                     System.out.println((i+1)+":"+arithmetic[i]);
 33                     j.anw(fenzi, fenmu);
 34                 }
 35                 if(fuhao==1 && a*d - b*c < 0) {
 36                     int fenzi = b*c - a*d;
 37                     int fenmu = b*d;
 38                     arithmetic[i] = biaodashi(c, d) + '-' + biaodashi(a, b) + '=';
 39                     System.out.println((i+1)+":"+arithmetic[i]);
 40                     j.anw(fenzi, fenmu);
 41                 }
 42                 if(fuhao==2) {
 43                     int fenzi = a*c;
 44                     int fenmu = b*d;
 45                     arithmetic[i] = biaodashi(a, b) + '×' + biaodashi(c, d) + '=';
 46                     System.out.println((i+1)+":"+arithmetic[i]);
 47                     j.anw(fenzi, fenmu);
 48                 }
 49                 if(fuhao==3 && c!=0) {
 50                     int fenzi = a*d;
 51                     int fenmu = b*c;
 52                     arithmetic[i] = biaodashi(a, b) + '÷' + biaodashi(c, d) + '=';
 53                     System.out.println((i+1)+":"+arithmetic[i]);
 54                     j.anw(fenzi, fenmu);
 55                 }
 56                 if(fuhao==3 && c==0) {
 57                     i--;
 58                 }
 59             }
 60             else {
 61                 b=1;
 62                 d=1;
 63                 if(fuhao==0) {
 64                     int fenzi = a*d + b*c;
 65                     int fenmu = b*d;
 66                     arithmetic[i] = a + "+" +c + "=";
 67                     System.out.println((i+1)+":"+arithmetic[i]);
 68                     j.anw(fenzi, fenmu);
 69                 }
 70                 if(fuhao==1 && a*d - b*c >= 0) {
 71                     int fenzi = a*d - b*c;
 72                     int fenmu = b*d;
 73                     arithmetic[i] = a + "-" +c + "=";
 74                     System.out.println((i+1)+":"+arithmetic[i]);
 75                     j.anw(fenzi, fenmu);
 76                 }
 77                 if(fuhao==1 && a*d - b*c < 0) {
 78                     int fenzi = b*c - a*d;
 79                     int fenmu = b*d;
 80                     arithmetic[i] = c + "-" +a + "=";
 81                     System.out.println((i+1)+":"+arithmetic[i]);
 82                     j.anw(fenzi, fenmu);
 83                 }
 84                 if(fuhao==2) {
 85                     int fenzi = a*c ;
 86                     int fenmu = b*d;
 87                     arithmetic[i] = a + "×" +c + "=";
 88                     System.out.println((i+1)+":"+arithmetic[i]);
 89                     j.anw(fenzi, fenmu);
 90                 }
 91                 if(fuhao==3 && c!=0) {
 92                     int fenzi = a*d ;
 93                     int fenmu = b*c;
 94                     arithmetic[i] = a + "÷" +c + "=";
 95                     System.out.println((i+1)+":"+arithmetic[i]);
 96                     j.anw(fenzi, fenmu);
 97                 }
 98                 if(fuhao==3 && c==0) {
 99                     i--;
100                 }
101                 
102             }
103         }
104     }
105     public static String biaodashi(int a,int b) {//判断假分数,并化假分数为带分数
106         if(a>=b) {
107             int c;
108             c = a/b;
109             int d;
110             d = a%b ;
111             if(d==0)
112                 return c+"";
113             else
114                 return a+"/"+b;
115         }
116         else {
117             return a+"/"+b;
118         }
119     }
120 }

  3、JiSuan.java

             计算随机生成的表达式的答案,并对用户输入的答案进行判断对错

 1 package jisuanwork;
 2 
 3 import java.util.Scanner;
 4 
 5 public class JiSuan {
 6     void anw(int fenzi,int fenmu){
 7         Scanner scanner = new Scanner(System.in);
 8         
 9         double sum = (double)fenzi/fenmu;
10         
11         String anw = scanner.nextLine();
12         String string[] =anw.split("/");
13         double [] result =new double[string.length];
14         for(int i=0;i<string.length ;i++) {
15             result[i]=Double.parseDouble(string[i]);
16         }
17         double sum1 =0;
18         if(string.length == 1 ) {
19             sum1 = (int) result[0];
20         }
21         else {
22             sum1 = result[0]/result[1];
23         }
24     
25         if(sum==sum1)
26             System.out.println("true");
27         else {
28             System.out.println("false");
29             System.out.println("正确答案为:"+sum);
30         }
31         
32     }
33 }

 

测试运行

 

总结

这次利用JAVA实现简单的四则运算还不够完美,比如没有随机生成带括号的,没有随机生成带多个运算符的式子,由于时间原因以及个人能力有限,这些只能以后慢慢完善。同时这次的四则运算也充分的显示了自己基础薄弱,大部分学过的知识都有遗忘,所以需要好好的回去复习基础知识。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM