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. js 手动插入meta标签和script标签

    // 插入 meta 标签 var oMeta = document.createElement('meta'); oMeta.content = 'width=device-width, initi ...

  2. Linux vsftpd 安装配置使用

    1.安装 yum install vsftpd 2.配置 允许root登陆: /etc/vsftpd/user_list文件中把root那一行删除或者注释掉 /etc/vsftpd/ftpusers文 ...

  3. 【Django-URL name详解005】

    1.打开zqxt_views/urls.py from django.contrib import admin from django.urls import path from calc impor ...

  4. zabbix历史数据相关表研究

    zabbix历史数据相关表研究 history和trends相关表 history和trends都是存储历史数据的地方.一般是通过监控项(item)配置里.匹配更新监控项(item)和设置HouseK ...

  5. openstack-ntp时间同步服务

    ntp时钟同步服务 NTP 工作请求 (1) 客户端将采用随机端口向 NTP 服务器 (UDP:123) 发出时间同步请求 (2)NTP 服务器收到请求后会将发出调校时间 (3)NTP 客户端接收到 ...

  6. stress负载生成器使用简介

    一.Stress工具原始网页: https://people.seas.harvard.edu/~apw/stress/ 二.Docker镜像的构建过程(dockerfile): progrium/s ...

  7. 关于Ocelot和Consul 实现GateWay(网关) 服务注册 负载均衡等方面

    Ocelot   路由  请求聚合  服务发现 认证  鉴权 限流熔断 内置负载均衡器 Consul   自动服务发现    健康检查 通过Ocelot搭建API网关   服务注册   负载均衡 1. ...

  8. (2)OSi模型

    osi七层模型 #(应用层,表示层,会话层) => 应用层 => 表达一个数据信息 # 传输层 port(端口) tcp/udp协议 硬件设备:四层交换机 四层路由器 # 网络层 ip协议 ...

  9. JavaScrpt常用的封装方法

    1.闭包封装.在这个封装方法中,所有的实例成员都共享属性和方法, 使得所有得方法和属性都私有且对象间共享 (function ($) { var Person = function(name) { r ...

  10. 关于list中移除某种数据类型的方法

    众所周知,list在不泛型的情况下是可以存放各种数据类型的,代码如下: public static void main(String[] args) { List list=new ArrayList ...