四则运算Java语言实验设计过程1
题目要求:
像二柱子那样,花二十分钟写一个能自动生成三十道小学四则运算题目的 “软件”。要求:除了整数以外,还要支持真分数的四则运算(需要验证结果的正确性)、题目避免重复、可定制出题的数量。
设计思路:首先通过random来进行随机数的产生,整数产生两个随机数,真分数需要产生四个随机数,并且可以通过字符串是否相等来对题目是否一致来进行判断,定制数量可以通过用户输入来进行设定循环的次数。
//自动生成30道四则运算,(整数,真分数),题目避免重复,可定制数量。
package calculator;
import java.util.*; public class calculator { public static void main(String[] args) {
// TODO Auto-generated method stub
//随机产生两位100以内的数
int a,b;//(真分数即为分子比分母小)
//随机产生运算符(+,-,*,/)
char[] c={'+','-','*','/'};
//随机生成整数运算或者真分数运算
int[] e={1,2};
System.out.println("请输入所要生成题目的数目:");
Scanner sc=new Scanner(System.in);
int number=sc.nextInt();
System.out.println("生成的题目如下:");
Random random=new Random();
for(int i=1;i<=number;i++){
int index1=random.nextInt(e.length);
if(index1==0)//生成整数
{
a=(int)(100*Math.random());
b=(int)(100*Math.random());
int index2=random.nextInt(c.length);
char d=c[index2];
System.out.print(a);
System.out.print(d);
System.out.println(b+"=");}
else if(index1==1)//生成真分数
{ }
}
} }
然后在else后添加关于真分数的算法
//循环法求两个数的最大公约数
//保证第一个参数大于第二个参数
if(a<b)
{
int temp;
temp=a;
a=b;
b=temp;
}
while(a%b!=0) //在余数不为零时循环
{
int temp=a%b;
a=b;
b=temp;
}
return b; //返回最大公约数
}
public static int minCommon(int a,int b)
{
//求最小公倍数
return a*b/maxCommon(a,b);
}
public static String reduce(int a ,int b)
{
//对于a/b组成的分数进行约分
//第一步就是找出两者的最大公约数
int c=maxCommon(a,b);
//分子分母约分
a=a/c;
b=b/c;
//把a,b转换成分数返回
String temp=a+"/"+b;
return temp;
}
public static String calculate(String a,String b,String c) //参数分别代表第一个分数,第二个分数,以及运算符
{
int a1=Integer.parseInt(a.substring(0,1));//代表a的分子
int a2=Integer.parseInt(a.substring(2));//代表a的分母
int b1=Integer.parseInt(b.substring(0,1));//代表b的分子
int b2=Integer.parseInt(b.substring(2));//代表b的分母
if(c.equals("+"))
{
//首先求两个分母的最小公倍数,进行通分
int temp=minCommon(a2,b2);
a1=temp/a2*a1;
b1=temp/b2*b1;
//求合并后的分子
int temp1=a1+b1;
String temp2=reduce(temp1,temp);
return temp2;
}
else if(c.equals("-"))
{
//首先求两个分母的最小公倍数,进行通分
int temp=minCommon(a2,b2);
a1=temp/a2*a1;
b1=temp/b2*b1;
//求合并后的分子
int temp1=a1-b1;
return reduce(temp1,temp);
}
else if(c.equals("*"))
{
//直接把分母相乘得到合并后的分母
int temp=a2*b2;
//求合并后的分子
int temp1=a1*b1;
return reduce(temp1,temp);
}
else if(c.equals("/"))
{
//分数相除就是第一个分数乘以第二个分数的倒数
int temp=a2*b1;
//求合并后的分子
int temp1=a1*b2;
return reduce(temp1,temp);
}
String a="成功了";
return a;
这个程序还需要有很多的改进,还需要进一步编写网页版,要尽早完成任务,完成王老板交代的要求!
四则运算Java语言实验设计过程1的更多相关文章
- Java语言进阶过程(转)
[以下肯定是不完整的列表,欢迎补充] Java是一个通用的编程语言,其实可以干很多事,怎么学Java就看怎么用了. 但有一些一般的步骤: 1. 熟悉一种文本编辑器,比如Vim, Emacs, Note ...
- Java语言特性、加载与执行
[开源.免费.纯面向对象.跨平台] 简单性: 相对而言,例如,Java是不支持多继承的,C++是支持多继承的,多继承比较复杂:C++ 有指针,Java屏蔽了指针的概念.所以相对来说Java是简单的. ...
- java语言编写矩阵的四则运算
题目要求如下: 设计程序实现矩阵的四则运算 设计要求: (1) 实现矩阵的四则运算. (2) 考虑实现带变元的矩阵计算. (3)考虑实现矩阵的特征值和特征向量的计算. 我使用java语言写的 目录结构 ...
- 第二次作业利用java语言编写计算器进行四则运算
随着第一次作业的完成,助教 牛老师又布置了第二次作业:用java语言编写一个程序然后进行四则运算用户用键盘输入一个字符来结束程序显示统计结果.一开始看到这个题目我也着实吓了一跳 因为不知道如何下手而且 ...
- 四则运算程序扩展:将程序改为java语言,并允许用户输入,对输入结果进行验证
题目 每个同学选一个方向,把程序扩展一下:1.让程序能接受用户输入答案,并判定对错.最后给出总共对/错 的数量.2.把程序变成一个网页程序,用户通过设定参数,就可以得到各种题目.3.把程序变成一个Wi ...
- 20145205 java语言实现数据结构实验一
数据结构实验要求 综合类实验设计3 已知有一组数据a1a2a3a4--anb1b2b3b4--bm,其中ai均大于bj,但是a1到an和b1到bm不是有序的,试设计两到三个算法完成数据排序,且把bj数 ...
- 《JAVA语言程序设计》上课笔记
教学目标:1.使学生了解JAVA课程的性质.定位.作用:为什么要学习JAVA?让学生知道如何学好JAVA: 教学内容: 一. 问几个问题 1. 你们到这里来干什么 ...
- JAVA语言中的修饰符
JAVA语言中的修饰符 -----------------------------------------------01--------------------------------------- ...
- AVL树原理及实现(C语言实现以及Java语言实现)
欢迎探讨,如有错误敬请指正 如需转载,请注明出处http://www.cnblogs.com/nullzx/ 1. AVL定义 AVL树是一种改进版的搜索二叉树.对于一般的搜索二叉树而言,如果数据恰好 ...
随机推荐
- POJ 2409 Let it Bead
思路 同这道题,只是颜色数从3变成c 代码 #include <cstdio> #include <algorithm> #include <cstring> #d ...
- CF983B XOR-pyramid
设\(xorx[l][r]\)表示题目中\(f(l,r)\)的值,则可以得出 \[ xorx[i][j]=xorx[i][j-1] \oplus xorx[i+1][j] \] 设\(maxx[l][ ...
- 题解——POJ 2234 Matches Game
这道题也是一个博弈论 根据一个性质 对于\( Nim \)游戏,即双方可以任取石子的游戏,\( SG(x) = x \) 所以直接读入后异或起来输出就好了 代码 #include <cstdio ...
- (转载)WinformGDI+入门级实例——扫雷游戏(附源码)
本文将作为一个入门级的.结合源码的文章,旨在为刚刚接触GDI+编程或对相关知识感兴趣的读者做一个入门讲解.游戏尚且未完善,但基本功能都有,完整源码在文章结尾的附件中. 整体思路: 扫雷的游戏界面让我从 ...
- vue运行报错--dependency
ERROR Failed to compile with 1 errors 11:17:27 This dependency was not found: 解决方法:把报错所缺少的依赖都装上 如 xx ...
- leetcode 查找每个元素都出现两次的列表,返回只出现一次的元素
Given an array of integers, every element appears # twice except for one. Find that single one. clas ...
- Cross Validation(交叉验证)
交叉验证(Cross Validation)方法思想 Cross Validation一下简称CV.CV是用来验证分类器性能的一种统计方法. 思想:将原始数据(dataset)进行分组,一部分作为训练 ...
- DLL.LoadLibrary失败(126)
1.LoadLibrary 返回 NULL,GetLastError 显示的是 错误码126,msdn上是这样的: ERROR_MOD_NOT_FOUND 126 (0x7E) The specifi ...
- Android主页Activity对多个Fragment实现不同的沉浸式标题(图片或者文字标题)
提示:讲解的该例实现是 FragmentTabHost + Fragment 实现: 1.示例效果图: 2.场景需求: 如示例图所示,在首页实现轮播图的沉浸,而 “发现” 和“我的”页是标题的沉浸. ...
- 《剑指offer》第五十三题(数字在排序数组中出现的次数)
// 面试题53(一):数字在排序数组中出现的次数 // 题目:统计一个数字在排序数组中出现的次数.例如输入排序数组{1, 2, 3, 3, // 3, 3, 4, 5}和数字3,由于3在这个数组中出 ...