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
主函数
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实现简单的四则运算的更多相关文章
- Java之简单的四则运算
简单的四则运算 请你编写程序实现能处理两个数的+.-.*./.%的表达式程序.数据的输入/输出全部使用标准输入/输出,输入数据的第一行为你需要计算表达式的个数,从第2行开始,每一行为你计算的一个表达式 ...
- 利用ANTLR4实现一个简单的四则运算计算器
利用ANTLR4实现一个简单的四则运算计算器 ANTLR4介绍 ANTLR能够自动地帮助你完成词法分析和语法分析的工作, 免去了手写去写词法分析器和语法分析器的麻烦 它是基于LL(k)的, 以递归下降 ...
- 01.Java 开发简单的计算器
难度为一般,适合具有 Java 基础和 Swing 组件编程知识的用户学习一. 实验介绍1.1 实验内容本次实验利用Java开发一个可以进行简单的四则运算的图形化计算器,会使用到 Java Swing ...
- Java实现简单版SVM
Java实现简单版SVM 近期的图像分类工作要用到latent svm,为了更加深入了解svm,自己动手实现一个简单版的. 之所以说是简单版,由于没实用到拉格朗日,对偶,核函数等等.而 ...
- java实现简单的单点登录
java实现简单的单点登录 摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统当中.本文从业务的角度分析了单点登录的需求和应用领域:从技术本身的角度分析了单点登录技术的内部机制和实现 ...
- Java自定义简单标签
Java自定义简单标签可以方便的在页面输出信息,并且对于权限的控制,和对于Jsp标签和servlet代码的分离有着很好的作用. 下面将以权限的控制为例自定义一个标签: 一.标签类型 <wxt: ...
- 主题:Java WebService 简单实例
链接地址:主题:Java WebService 简单实例 http://www.iteye.com/topic/1135747 前言:朋友们开始以下教程前,请先看第五大点的注意事项,以避免不必要 ...
- java设计模式--简单工厂
java设计模式--简单工厂 简单工厂不是一个标准的设计模式,但是很常用需要掌握. 在java应用开发中,要"面向接口编程". 1.java中接口的概念: 在java中接口是一种特 ...
- Python实现简单的四则运算
GitHub 项目地址 https://github.com/745421831/-/tree/master PSP PSP2.1 Personal Software Process Stages 预 ...
随机推荐
- redis使用总结(二)(jedis使用)
Jedis使用(Jedis中的API和redis的指令基本相同) 1.创建maven工程,在pom文件中导入jedis的坐标 <dependency> <groupId>red ...
- React Native之配置开发环境
安装前注意: 1)在Max OS X 10.11(El Capitan)版本中,homebrew在安装软件时可能会碰到/usr/local目录不可写的权限问题.可以使用下面的命令修复: sudo ch ...
- Linux 内存泄漏检查工具 valgrind
抄自<从零开始的JSON库教程>,先mark一下,以后再慢慢研究. ======== 引用分割线 ======== 在 Linux.OS X 下,我们可以使用 valgrind 工具(用 ...
- freopen()函数在ACM中的使用
#ifndef ONLINE_JUDGE freopen("in.txt","r",stdin); #endif https://blog.csdn.net/c ...
- export ,export default 和 import 区别 以及用法
首先要知道export,import ,export default是什么 ES6模块主要有两个功能:export和importexport用于对外输出本模块(一个文件可以理解为一个模块)变量的接口i ...
- Privoxy教程
简介 Privoxy 是一个 代理软件 简单说,就是进出你电脑的流量守门人.借由 Privoxy,我们可以控制出去的请求,还可以改写返回的响应.不必要的请求 – 比如视频广告的地址.图片广告的地址,我 ...
- Python VisibleDeprecationWarning: converting an array with ndim > 0 to an index will result in an error in the future
问题原因:nd.array值直接用做数组索引,索引一般需为整数,可能带来风险,比如浮点数作为索引 解决方案:把nd.array值强制转成int peakIdx = int( np.asarray(pe ...
- 论文笔记:SiamRPN++: Evolution of Siamese Visual Tracking with Very Deep Networks
SiamRPN++: Evolution of Siamese Visual Tracking with Very Deep Networks 2019-04-02 12:44:36 Paper:ht ...
- Docker Swarm Mode 学习笔记(创建 Swarm 集群)
Swarm 集群由管理节点与工作节点组成. 初始化集群 使用命令:docker swarm init 如果你的 Docker 主机有多个网卡, 拥有多个 IP 地址, 必须使用 --advertise ...
- 解决 Cannot uninstall 'pyparsing' 问题
参考 pyparsing 无法卸载导致安装 matplotlib 出错 解决 Cannot uninstall 'pyparsing' 问题 在安装 pydot 时遇到依赖 pyparsing 无法更 ...