1. 约分分数

1.1 保留质数

 /**
* 将数值放入到fraction数组中
* @param fen 简要放的 int类型数值
*/
public void fenshu(int fen) {
fraction[i++] = fen;
}

1.2  定义int类型数组

 /**
* 获得int 类型的数组,fraction对象
*/
public void getFraction() {
fraction = new int[nums];
}

1.3 获取质数数量

 /**
* 获取num有多少个质数相乘的质数的数目,质数可相同
* @param num 任意的int类型的数值
*/
public void primeNumber(int num) {
if (num == 1) {
nums++;
System.out.println("num为 " + num);
} else {
// 注意:因为老师不会出0/2的数,所以没写if(numa>0)如果给num 为0这里会出现死循环
if (num % a == 0) {
nums++;
int d = num / a;
primeNumber(d);
} else {
if (num % b == 0) {
nums++;
int d = num / b;
primeNumber(d);
} else {
b = b + 2;
primeNumber(num);
}
}
}
}

1.4 将数值分解成质数(质数可以相同)

 /**
* 将值分解成最小质数和集
* @param num 将要分解的 int类型的数值
*/
public void prime(int num) {
if (num == 1) {
System.out.println("num为 " + num);
} else {
// 注意:因为老师不会出0/2的数,所以没写if(numa>0)如果给num 为0这里会出现死循环
if (num % a == 0) {
fenshu(a);
int d = num / a;
System.out.println("a为 " + a);
System.out.println("num为 " + d);
prime(d);
} else {
if (num % c == 0) {
fenshu(c);
int d = num / c;
System.out.println("c为 " + c);
System.out.println("num为 " + d);
prime(d);
} else {
c = c + 2;
System.out.println("c更改为 " + c);
System.out.println("num不变依旧为 " + num);
prime(num);
}
}
}
}

1.5 将分母和分子进行约分成最简质数

 /**
* 将两个数组进行比较,如数组内有相同的数据,将其转换为1
* @param a 传递的第一个数组a
* @param b 传递的第二个数组b
*/
public static void compareTwo(int[] a, int[] b) {
int alength = a.length;
int blength = b.length;
if (alength >= blength) {
for (int k = 0; k < blength; k++) {
for (int m = 0; m < alength; m++) {
if (a[m] == b[k]) {
a[m] = 1;
b[k] = 1;
break;
}
}
}
} else {
for (int k = 0; k < alength; k++) {
for (int m = 0; m < blength; m++) {
if (a[k] == b[m]) {
a[k] = 1;
b[m] = 1;
break;
}
}
}
}
}

1.6 将分子和分母的质数分别相乘得到最简分子和分母

 /**
*将数组内的所有元素进行相乘
* @param a 数组a
* @return
*/
public static int product(int[] a){
int product=1;
for(int s=0;s<a.length-1;s++){
product=product*a[s];
a[s]=product;
}
return product;
}

1.7 根据用户的条件生成分子分母

 /**
* 获取随机生成一个包含分子和分母,且分子分母都为质数的数组。
* @param num1 分子最小值
* @param num2 分子最大值
* @param num3 分母最小值
* @param num4 分母最大值
* @return 返回一个包含分子和分母的数组
*/
public static int[] fractions(int num1,int num2,int num3,int num4){
int[] fenshu=new int[2];
int first = generate(num1, num2);
int secound = generate(num3, num4);
count3Bean cBean=new count3Bean();
cBean.primeNumber(first);
cBean.getFraction();
cBean.prime(first);
int[] a=cBean.fraction;
count3Bean cBean2=new count3Bean();
cBean2.primeNumber(secound);
cBean2.getFraction();
cBean2.prime(secound);
int[] b=cBean2.fraction;
compareTwo(a, b);
int fenzi=product(a);
int fenmu=product(b);
fenshu[0]=fenzi;
fenshu[1]=fenmu;
return fenshu;
}

1.8 将分子分母进行约分

 /**
* 将分数处理为不能再约分的数
* @param num1 分子
* @param num2 分母
* @return int类型的数组包含分子和分母
*/ public static int[] fractions2(int num1,int num2){
int[] fenshu=new int[2];
count3Bean cBean=new count3Bean();
cBean.primeNumber(num1);
cBean.getFraction();
cBean.prime(num1);
int[] a=cBean.fraction;
count3Bean cBean2=new count3Bean();
cBean2.primeNumber(num2);
cBean2.getFraction();
cBean2.prime(num2);
int[] b=cBean2.fraction;
compareTwo(a, b);
int fenzi=product(a);
int fenmu=product(b);
fenshu[0]=fenzi;
fenshu[1]=fenmu;
return fenshu;
}

2. action 类

 public class fenshu {

     private String fenzixiao;
private String fenzida;
private String fenmuxiao;
private String fenmuda;
private String number;
.......
//此处省略get和set方法
public String execute(){
ActionContext actioncontext = ActionContext.getContext();
Map<String, Object> session = actioncontext.getSession();
List<Four> fours=count3.getFourList(Integer.parseInt(number), Integer.parseInt(fenzixiao), Integer.parseInt(fenzida), Integer.parseInt(fenmuxiao), Integer.parseInt(fenmuda));
session.put("fours", fours);
return "fenshusuccess";
} }

3. 运行结果图

3.1 初始界面

3.2 用户填数据

3.3 生成题目界面(如在a/b+c/d=e中a/b和c/d都为分数)

3.4 用户填写答案

3.5 判断答案正确页面(判断代码在之后)

自动生成数学题型三 (框架Struts2)题型如 a+b=c(a、b、c都为分数)的更多相关文章

  1. 自动生成数学题型一 (框架Struts2) 题型如(a+b=c)

    1. 加减乘除 1.1 随机生成制定范围的整数 /** * 随机产生一个被限定范围的整数 * * @param num1 * 定义起始范围 num1 * @param num2 * 定义终止范围 nu ...

  2. Makefile 7——自动生成依赖关系 三颗星

    后面会介绍gcc获得源文件依赖的方法,gcc这个功能就是为make而存在的.我们采用gcc的-MM选项结合sed命令.使用sed进行替换的目的是为了在目标名前加上“objs/”前缀.gcc的-E选项, ...

  3. 自动生成DTO(Sugar框架)

    step1:启动api项目 step2:使用postman工具,填上接口地址http://localhost:7788/api/automapper/AutoMapperSuper step3:表格数 ...

  4. 自动生成数学题型二(框架struts2)题型如((a+b)*c=d)

    1. 生成题目 1.1 生成单个题目 public static String[] twoOperatorAndOperator(int num1, int num2) { double first ...

  5. 自动生成DTO(EF框架)

    [0]安装相关工具包 PostgreSQL版本: Npgsql.EntityFrameworkCore.PostgreSQL Npgsql.EntityFrameworkCore.PostgreSQL ...

  6. [goa]golang微服务框架学习(二)-- 代码自动生成

    之前用过go语言的反射来做一些代码生成,参考这篇. 但是这种方式,入侵太强,需要执行对应的申明调用, 所以对GOA框架的自动生成非常感兴趣,于是仔细研究了一下,发现用的比较巧妙, 这里先卖个关子,先看 ...

  7. 文件参数化-utp框架之根据yaml文件自动生成python文件+utp运行用例

    根据yaml文件自动生成python文件 utp框架: bin目录:存放执行文件(run.py) cases目录:存放生成的用例的python文件(该目录下的文件为根据data目录下的测试用例生成的p ...

  8. Spring Boot(九)Swagger2自动生成接口文档和Mock模拟数据

    一.简介 在当下这个前后端分离的技术趋势下,前端工程师过度依赖后端工程师的接口和数据,给开发带来了两大问题: 问题一.后端接口查看难:要怎么调用?参数怎么传递?有几个参数?参数都代表什么含义? 问题二 ...

  9. Spring Boot Swagger2自动生成接口文档

    一.简介 在当下这个前后端分离的技术趋势下,前端工程师过度依赖后端工程师的接口和数据,给开发带来了两大问题: 1.问题一.后端接口查看难:要怎么调用?参数怎么传递?有几个参数?参数都代表什么含义? 2 ...

随机推荐

  1. 每天一个linux命令(43)--netstat命令

    netstat 命令用于显示与 IP TCP  UDP 和 ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况.netstat 是在内核中访问网络及相关信息的程序,它能提供TCP连接,T ...

  2. 移动端click事件延迟300ms到底是怎么回事,该如何解决?

    不管在移动端还是PC端,我们都需要处理用户点击,这个最常用的事件.但在touch端click事件响应速度会比较慢,在较老的手机设备上会更为明显(300ms的延迟). 问题由来 这要追溯至 2007 年 ...

  3. spring提供的线程池

    SPRING中的线程池ThreadPoolTaskExecutor 分类: JAVA Spring2013-07-12 10:36 14896人阅读 评论(9) 收藏 举报 Spring线程池多线程 ...

  4. Ajax基础与登入

    Ajax 是 Asynchronous JavaScript and XML的缩写. Ajax的优点: 优点:减轻服务器的负担,按需取数据,最大程度的减少冗余请求 局部刷新页面,减少用户心理和实际的等 ...

  5. Android ORMLite 框架的入门用法

    大家在Android项目中或多或少的都会使用数据库,为了提高我们的开发效率,当然少不了数据库ORM框架了,尤其是某些数据库操作特别频繁的app:本篇博客将详细介绍ORMLite的简易用法. 下面开始介 ...

  6. eclipse和myeclipse设置默认编码格式为UTF-8

    1:jsp页面设置默认为utf-8 以eclipse为例 2:java界面设置: Window->Preferences->General->Workspace 面板Text fil ...

  7. Octave Tutorial(《Machine Learning》)之第四课《绘图数据》

    第四课 Plotting Data 绘图数据 t = [0,0.01,0.98]; y1 = sin(2*pi*4*t); y2 = cos(2*pi*4*t); plot(t,y1);(绘制图1) ...

  8. TimeUnit枚举类

    TimeUnit是  java.util.concurrent 中的一个枚举类.一般让线程进行睡眠时使用: TimeUnit.MILLISECONDS.sleep(100); 比如上面一行代码表示让当 ...

  9. Maven——快速入门手册(学习记录)

    前言: 前段时间进行了一点maven的入门学习,在这里做个记录,希望能帮到一些正在学习的朋友们.maven版本为3.3.9.希望大家觉得好的点个赞,觉得不好的多提提意见和建议做个交流.这里也贴出我学习 ...

  10. .NET Framework 各版本区别(简介)

    本文通过在网络资料整理而得. .NET Framework1.1 1.自带了对mobile asp.net控件的支持.(在1.0版本是以附加功能实现) 2.加入了ASP.NET应用程序的代码安全访问功 ...