四则运算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树是一种改进版的搜索二叉树.对于一般的搜索二叉树而言,如果数据恰好 ...
随机推荐
- springboot配置redis
https://www.cnblogs.com/xiaoping1993/p/7761123.html https://www.cnblogs.com/gdpuzxs/p/7222309.html s ...
- Summary on Visual Tracking: Paper List, Benchmarks and Top Groups
Summary on Visual Tracking: Paper List, Benchmarks and Top Groups 2018-07-26 10:32:15 This blog is c ...
- [JavaScript] - replaceAll,将字符串中的字母或数字等全部替换掉的方式
原题 function DNAtoRNA(dna) { // create a function which returns an RNA sequence from the given DNA se ...
- BZOJ 4771 七彩树(可持久化线段树合并)
题意 https://www.lydsy.com/JudgeOnline/problem.php?id=4771 思路 和 HDU 3333 其实有点像,不过是把序列的问题放在了树上,多维护一个深度即 ...
- entity framework浅谈
1. 什么是EF 微软提供的ORM工具. ORM让开发人员节省数据库访问代码的时间. 将更多的时间放在业务逻辑层面上. 开发人员使用linq语言, 对数据库进行操作. 2. EF的使用场景 EF有三种 ...
- NLog——ElasticSearch——Kibana
Nlog.elasticsearch.Kibana以及logstash在项目中的应用(一) Nlog.elasticsearch.Kibana以及logstash在项目中的应用(二) ASP.NET ...
- PTA 7-2 二叉搜索树的结构(30 分)
7-2 二叉搜索树的结构(30 分) 二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值:若它的右子树不空,则右子树上所有结点的值均大 ...
- Codeforces Round #367 (Div. 2) D. Vasiliy's Multiset(01字典树求最大异或值)
http://codeforces.com/contest/706/problem/D 题意:有多种操作,操作1为在字典中加入x这个数,操作2为从字典中删除x这个数,操作3为从字典中找出一个数使得与给 ...
- _event
EventId 事件ID 请使用大于100的ID EventName 事件的名称,用于游戏中各种提示 NoticeText 事件开始时的弹窗内容 GossipText 功能宝石等菜单内容 Z ...
- Python 循环与定义函数
break for i in range(10): if i == 2: break print i 0 1 continue for i in range(10): if i == 2: conti ...