题目要求:

  像二柱子那样,花二十分钟写一个能自动生成三十道小学四则运算题目的 “软件”。要求:除了整数以外,还要支持真分数的四则运算(需要验证结果的正确性)、题目避免重复、可定制出题的数量。

设计思路:首先通过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的更多相关文章

  1. Java语言进阶过程(转)

    [以下肯定是不完整的列表,欢迎补充] Java是一个通用的编程语言,其实可以干很多事,怎么学Java就看怎么用了. 但有一些一般的步骤: 1. 熟悉一种文本编辑器,比如Vim, Emacs, Note ...

  2. Java语言特性、加载与执行

    [开源.免费.纯面向对象.跨平台] 简单性: 相对而言,例如,Java是不支持多继承的,C++是支持多继承的,多继承比较复杂:C++ 有指针,Java屏蔽了指针的概念.所以相对来说Java是简单的. ...

  3. java语言编写矩阵的四则运算

    题目要求如下: 设计程序实现矩阵的四则运算 设计要求: (1) 实现矩阵的四则运算. (2) 考虑实现带变元的矩阵计算. (3)考虑实现矩阵的特征值和特征向量的计算. 我使用java语言写的 目录结构 ...

  4. 第二次作业利用java语言编写计算器进行四则运算

    随着第一次作业的完成,助教 牛老师又布置了第二次作业:用java语言编写一个程序然后进行四则运算用户用键盘输入一个字符来结束程序显示统计结果.一开始看到这个题目我也着实吓了一跳 因为不知道如何下手而且 ...

  5. 四则运算程序扩展:将程序改为java语言,并允许用户输入,对输入结果进行验证

    题目 每个同学选一个方向,把程序扩展一下:1.让程序能接受用户输入答案,并判定对错.最后给出总共对/错 的数量.2.把程序变成一个网页程序,用户通过设定参数,就可以得到各种题目.3.把程序变成一个Wi ...

  6. 20145205 java语言实现数据结构实验一

    数据结构实验要求 综合类实验设计3 已知有一组数据a1a2a3a4--anb1b2b3b4--bm,其中ai均大于bj,但是a1到an和b1到bm不是有序的,试设计两到三个算法完成数据排序,且把bj数 ...

  7. 《JAVA语言程序设计》上课笔记

    教学目标:1.使学生了解JAVA课程的性质.定位.作用:为什么要学习JAVA?让学生知道如何学好JAVA: 教学内容: 一.        问几个问题 1.             你们到这里来干什么 ...

  8. JAVA语言中的修饰符

    JAVA语言中的修饰符 -----------------------------------------------01--------------------------------------- ...

  9. AVL树原理及实现(C语言实现以及Java语言实现)

    欢迎探讨,如有错误敬请指正 如需转载,请注明出处http://www.cnblogs.com/nullzx/ 1. AVL定义 AVL树是一种改进版的搜索二叉树.对于一般的搜索二叉树而言,如果数据恰好 ...

随机推荐

  1. P4313 文理分科

    思路 遇到这种利益冲突的最终利益最大化问题 考虑转化为最小割,使得损失的价值最小 相当于文科是S,理科是T,选出最小割就是确定损失代价最小的方案 然后就把S向每个点连一条cap=art[i][j]的边 ...

  2. input事件手机端可能会影响手写

    <input type="text" oninput="this.value=this.value.trim()"> 这样会导致手写出现问题,一个字 ...

  3. Unity3D代码动态修改材质球的颜色

    代码动态修改材质球的颜色: gameObject.GetComponent<Renderer>().material.color=Color.red;//当材质球的Shader为标准时,可 ...

  4. Derek解读Bytom源码-P2P网络 upnp端口映射

    作者:Derek 简介 Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom ...

  5. Python实现机器学习算法:AdaBoost算法

    Python程序 ''' 数据集:Mnist 训练集数量:60000(实际使用:10000) 测试集数量:10000(实际使用:1000) 层数:40 ------------------------ ...

  6. 什么是mvc?

    MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型  (Model).视图(View)和控制器(Controller).      ...

  7. 51nod 1689 逛街(优先队列)

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1689 题意: 题意: 枚举终点,这样就确定路上的花费,接下来只需要计算进 ...

  8. 轮播图(jQuery)

    效果图: -----------------------------------------html------------------------------------------------- ...

  9. Codeforces 85 D. Sum of Medians

    题目链接:http://codeforces.com/contest/85/problem/D 做法果然男默女泪啊..... 大概就是直接开了一个$vector$每次插入删除都用自带的$insert$ ...

  10. 远程连接MongoDB报“Network is unreachable”错误的解决方法

    解决办法:/etc/mongod.conf 里把127.0.0.1 改成 0.0.0.0