四则运算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树是一种改进版的搜索二叉树.对于一般的搜索二叉树而言,如果数据恰好 ...
随机推荐
- 4-Five-Youth
①People are always talking about 'the problem of youth'. If there is one--which I take leave to do ...
- Java中常用的方法
枚举: 1:DemoEnum.valueOf(String str) 从枚举类中中找字符串,如果有则返回对应枚举值 2:DemoEnum.values() 获得枚举集合 3:DemoEnum.prop ...
- zepto 入门
2017-03-17 文章来源:http://www.cnblogs.com/daysme zepto 简介 jq虽然有一些衍生的插件可用在移动端上,但它有点大. click 有,但有问题 onmou ...
- 3、python内置类型(0529)
python的内置对象类型以及支持的运算 python对象的相关术语 python程序中保存的所有数据都是围绕对象这个概念展开的 程序中存储的所有数据都是对象 每个对象都有一个身份.一个类型和一个值 ...
- HTML-CSS-JS-JQ常用知识点总结
html:展示文件 标签:<html><head><title></title><meta><link><style> ...
- jvm到底是什么?有什么作用?工作机制如何?
1.jvm定义 JVM就是java虚拟机,它是一个虚构出来的计算机,可在实际的计算机上模拟各种计算机的功能.JVM有自己完善的硬件结构,例如处理器.堆栈和寄存器等,还具有相应的指令系统. 2.jvm作 ...
- JS中的document.title可以获取当前网页的标题
<!DOCTYPE html> <html> <head> <title>jb51.net</title> </head> &l ...
- java中\r与\n的区别
\r : return 到当前行的最左边. \n: newline 向下移动一行,并不移动左右. Linux中\n表示回车+换行: Windows中\r\n表示回车+换行. 测试了一下,在java,w ...
- 算法笔记--字典树(trie 树)&& ac自动机 && 可持久化trie
字典树 简介:字典树,又称单词查找树,Trie树,是一种树形结构,是哈希树的变种. 优点:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较. 性质:根节点不包含字符,除根节点外每一个 ...
- Asp.net core 学习笔记 ( Router 路由 )
和之前的一样用法. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory log ...