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 预 ...
随机推荐
- 前后端通信中使用Ajax与后台接口api交互(以登录功能为例)
一.查阅开发文档 首先,要做这个功能前,我们必须先查阅后台接口文档,了解使用登录接口时,需要提交哪些参数,并且接口使用返回的数据. 这里我使用了一个返回json格式数据的登录接口为例,讲解怎么使用Aj ...
- VB代码收集
1.随机获取5位验证码? 需求: 创建一个Label1:名称为随机验证码生成 创建一个Label2:名称为为空,属性BorderStyle=1 创建一个CommandButton:名称为获取随机码 代 ...
- axure原型设计
在上一个学期的学习中,我们已经初步学习了axure的使用方法,它可以为负责定义需求设计,功能和界面的人员能快速设计出所需产品. 引入:在我们想为软件设计原型的时候,纸质原型很难表达交互的界面,与此同时 ...
- 第一次远程ubuntu用c写Hello Word出现的问题
2019-03-26 21:48:48 之前已经学过c语言,但是一直是在win10上用VC++6.0来写代码的,现在想尝试在linux下用c语言 其实主要目的是来学习linux 1.问题: 在ubun ...
- JAVA学习过程的基础笔记
1.JDK的安装与环境变量的设置与测试2.STS简单使用3.CMD控制器的使用4.JAVA的编译与反编译的执行过程5.一,变量与变量的使用 1.变量是在程序运行中其值可以改变的量,java程序的一个基 ...
- selenium 文件上传
一般分两个场景:一种是input标签,这种可以用selenium提供的send_keys()方法轻松解决: 另外一种非input标签实现起来比较困难,可以借助autoit工具或者SendKeys第三方 ...
- 还原真实,javascript之预编译 / 预解析
今天在群里吹水时,有群友提出一个问题.我一看很简单,就立马给出了答案:因为存在变量提升,所以输出undefined.本以为无人反驳,可确招来口诛笔伐.作为写实派的我,一贯以来坚持真实是我的使命,岂能容 ...
- Mysql 通用知识 2019-03-27
充电mysql 官网 https://www.mysql.com/ 以上是mysql的产品线,多数是收费的.只有社区版是免费的. 所以下面只说社区版community. MySQL Community ...
- 20175312 2018-2019-2 实验一《Java开发环境的熟悉》实验报告
20175312 2018-2019-2 实验一<Java开发环境的熟悉>实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试J ...
- 剑指offer 11:二进制中 1 的个数
题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 解题代码 法一: public class Solution { public int NumberOf1(int n) { ...