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

主函数

 package jisuanwork;

 import java.util.Scanner;

 public class Arithmetic {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入产生几以内的数字:");
int num = scanner.nextInt();
System.out.println("请输入产生多少道题目:");
int t = scanner.nextInt();
Subject subject = new Subject();
subject.set(num, t); }
}

2、Subject.java

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

 package jisuanwork;

 import java.util.Random;
import java.util.Scanner; public class Subject {
void set (int num , int t){
Random random = new Random();
Scanner scanner = new Scanner(System.in);
JiSuan j = new JiSuan(); String arithmetic[] = new String[t];
for(int i = 0 ; i < t ; i++) {
int a = (int)random.nextInt(num);//分子
int b = (int)random.nextInt(num);//分母
int c = (int)random.nextInt(num);//另一个分子
int d = (int)random.nextInt(num);//另一个分母
int fuhao = random.nextInt(4);//0代表+,1代表-,2代表乘,3代表除
if(b!=0 && d!=0) {
if(fuhao==0) {
int fenzi = a*d + b*c;
int fenmu = b*d;
arithmetic[i] = biaodashi(a,b) + '+' + biaodashi(c,d) + '=';
System.out.println((i+1)+":"+arithmetic[i]);
j.anw(fenzi, fenmu); }
if(fuhao==1 && a*d - b*c >= 0) {
int fenzi = a*d - b*c;
int fenmu = b*d;
arithmetic[i] = biaodashi(a,b) + '-' + biaodashi(c,d) + '=';
System.out.println((i+1)+":"+arithmetic[i]);
j.anw(fenzi, fenmu);
}
if(fuhao==1 && a*d - b*c < 0) {
int fenzi = b*c - a*d;
int fenmu = b*d;
arithmetic[i] = biaodashi(c, d) + '-' + biaodashi(a, b) + '=';
System.out.println((i+1)+":"+arithmetic[i]);
j.anw(fenzi, fenmu);
}
if(fuhao==2) {
int fenzi = a*c;
int fenmu = b*d;
arithmetic[i] = biaodashi(a, b) + '×' + biaodashi(c, d) + '=';
System.out.println((i+1)+":"+arithmetic[i]);
j.anw(fenzi, fenmu);
}
if(fuhao==3 && c!=0) {
int fenzi = a*d;
int fenmu = b*c;
arithmetic[i] = biaodashi(a, b) + '÷' + biaodashi(c, d) + '=';
System.out.println((i+1)+":"+arithmetic[i]);
j.anw(fenzi, fenmu);
}
if(fuhao==3 && c==0) {
i--;
}
}
else {
b=1;
d=1;
if(fuhao==0) {
int fenzi = a*d + b*c;
int fenmu = b*d;
arithmetic[i] = a + "+" +c + "=";
System.out.println((i+1)+":"+arithmetic[i]);
j.anw(fenzi, fenmu);
}
if(fuhao==1 && a*d - b*c >= 0) {
int fenzi = a*d - b*c;
int fenmu = b*d;
arithmetic[i] = a + "-" +c + "=";
System.out.println((i+1)+":"+arithmetic[i]);
j.anw(fenzi, fenmu);
}
if(fuhao==1 && a*d - b*c < 0) {
int fenzi = b*c - a*d;
int fenmu = b*d;
arithmetic[i] = c + "-" +a + "=";
System.out.println((i+1)+":"+arithmetic[i]);
j.anw(fenzi, fenmu);
}
if(fuhao==2) {
int fenzi = a*c ;
int fenmu = b*d;
arithmetic[i] = a + "×" +c + "=";
System.out.println((i+1)+":"+arithmetic[i]);
j.anw(fenzi, fenmu);
}
if(fuhao==3 && c!=0) {
int fenzi = a*d ;
int fenmu = b*c;
arithmetic[i] = a + "÷" +c + "=";
System.out.println((i+1)+":"+arithmetic[i]);
j.anw(fenzi, fenmu);
}
if(fuhao==3 && c==0) {
i--;
} }
}
}
public static String biaodashi(int a,int b) {//判断假分数,并化假分数为带分数
if(a>=b) {
int c;
c = a/b;
int d;
d = a%b ;
if(d==0)
return c+"";
else
return a+"/"+b;
}
else {
return a+"/"+b;
}
}
}

  3、JiSuan.java

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

 package jisuanwork;

 import java.util.Scanner;

 public class JiSuan {
void anw(int fenzi,int fenmu){
Scanner scanner = new Scanner(System.in); double sum = (double)fenzi/fenmu; String anw = scanner.nextLine();
String string[] =anw.split("/");
double [] result =new double[string.length];
for(int i=0;i<string.length ;i++) {
result[i]=Double.parseDouble(string[i]);
}
double sum1 =0;
if(string.length == 1 ) {
sum1 = (int) result[0];
}
else {
sum1 = result[0]/result[1];
} if(sum==sum1)
System.out.println("true");
else {
System.out.println("false");
System.out.println("正确答案为:"+sum);
} }
}

测试运行

总结

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

JAVA实现简单的四则运算的更多相关文章

  1. Java之简单的四则运算

    简单的四则运算 请你编写程序实现能处理两个数的+.-.*./.%的表达式程序.数据的输入/输出全部使用标准输入/输出,输入数据的第一行为你需要计算表达式的个数,从第2行开始,每一行为你计算的一个表达式 ...

  2. 利用ANTLR4实现一个简单的四则运算计算器

    利用ANTLR4实现一个简单的四则运算计算器 ANTLR4介绍 ANTLR能够自动地帮助你完成词法分析和语法分析的工作, 免去了手写去写词法分析器和语法分析器的麻烦 它是基于LL(k)的, 以递归下降 ...

  3. 01.Java 开发简单的计算器

    难度为一般,适合具有 Java 基础和 Swing 组件编程知识的用户学习一. 实验介绍1.1 实验内容本次实验利用Java开发一个可以进行简单的四则运算的图形化计算器,会使用到 Java Swing ...

  4. Java实现简单版SVM

    Java实现简单版SVM 近期的图像分类工作要用到latent svm,为了更加深入了解svm,自己动手实现一个简单版的.         之所以说是简单版,由于没实用到拉格朗日,对偶,核函数等等.而 ...

  5. java实现简单的单点登录

    java实现简单的单点登录 摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统当中.本文从业务的角度分析了单点登录的需求和应用领域:从技术本身的角度分析了单点登录技术的内部机制和实现 ...

  6. Java自定义简单标签

     Java自定义简单标签可以方便的在页面输出信息,并且对于权限的控制,和对于Jsp标签和servlet代码的分离有着很好的作用. 下面将以权限的控制为例自定义一个标签: 一.标签类型 <wxt: ...

  7. 主题:Java WebService 简单实例

    链接地址:主题:Java WebService 简单实例    http://www.iteye.com/topic/1135747 前言:朋友们开始以下教程前,请先看第五大点的注意事项,以避免不必要 ...

  8. java设计模式--简单工厂

    java设计模式--简单工厂 简单工厂不是一个标准的设计模式,但是很常用需要掌握. 在java应用开发中,要"面向接口编程". 1.java中接口的概念: 在java中接口是一种特 ...

  9. Python实现简单的四则运算

    GitHub 项目地址 https://github.com/745421831/-/tree/master PSP PSP2.1 Personal Software Process Stages 预 ...

随机推荐

  1. PreparedStatement传进null值报错

    最近在测试jdbc数据导入大量数据的性能,发现PreparedStatement传进null值会报错. 解决方法: setObject(int parameterIndex, Object x, in ...

  2. Pandas: 使用str.replace() 进行文本清洗

    str.replace()可以一次处理一整个Series.str.replace()的正式形式为 Series.str.replace(pat, repl) ,其中pat为想要寻找的模式,一般为正则表 ...

  3. Domain logic approachs

    1.transaction script(事务脚本) 概述: 很多企业应用可以看成一系列的事务,每一个事务可以通过使用一个Transaction Script来处理. 用法: 使用Transactio ...

  4. 让selenium中的Cromerderive不加载图片设置

    把配置参数(chrom_opt)设置好后将其添加到 browser = webdriver.Chrome(executable_path="chromedriver.exe的路径" ...

  5. 工作中常用的 Linux 命令

    awk 示例: env变量值如下,需要获得pkg_url的链接值: {"name": "michael", "sex": "mal ...

  6. SAP 应收票据处理之贴现流程和配置

    特殊总账的应收票据处理是通过特殊总账标识实现的,特殊总账标识为W.在配置特殊总账时候,可以通过下面路径,定义特殊总账标识对应的备选科目.

  7. css中绝对定位和相对定位的区别

    先说个技巧一般用:子绝父相,即相对定位是给父级的,绝对定位的时候是给子级的. 一:绝对定位 position: absolute;绝对定位:绝对定位是相对于元素最近的已定位的祖先元素(即是设置了绝对定 ...

  8. 拿取页面值 跟拿取value里面的值

    拿取页面输入框的数值 使用  val() val()设置或返回表单字段的值 拿取value里面的数值 value(); attr() 获取属性值

  9. webpack创建页面的过程

    1.项目文件夹中创建各类型文件放置的文件夹,如:iTestingWeb文件夹下创建src dist文件夹,用途:src为源码 dist为生成后的文件放置位置,然后在源码文件夹中进一步按文件类型增加文件 ...

  10. Left Join on 多条件查询时,条件过滤的问题

    例如:A  Left Join B on (...) on 后面的条件是对B数据的过滤,如果要对A的数据或者联合之后的数据集进行过滤,则要把过滤条件放在where子句中