自动生成数学题型三 (框架Struts2)题型如 a+b=c(a、b、c都为分数)
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都为分数)的更多相关文章
- 自动生成数学题型一 (框架Struts2) 题型如(a+b=c)
1. 加减乘除 1.1 随机生成制定范围的整数 /** * 随机产生一个被限定范围的整数 * * @param num1 * 定义起始范围 num1 * @param num2 * 定义终止范围 nu ...
- Makefile 7——自动生成依赖关系 三颗星
后面会介绍gcc获得源文件依赖的方法,gcc这个功能就是为make而存在的.我们采用gcc的-MM选项结合sed命令.使用sed进行替换的目的是为了在目标名前加上“objs/”前缀.gcc的-E选项, ...
- 自动生成DTO(Sugar框架)
step1:启动api项目 step2:使用postman工具,填上接口地址http://localhost:7788/api/automapper/AutoMapperSuper step3:表格数 ...
- 自动生成数学题型二(框架struts2)题型如((a+b)*c=d)
1. 生成题目 1.1 生成单个题目 public static String[] twoOperatorAndOperator(int num1, int num2) { double first ...
- 自动生成DTO(EF框架)
[0]安装相关工具包 PostgreSQL版本: Npgsql.EntityFrameworkCore.PostgreSQL Npgsql.EntityFrameworkCore.PostgreSQL ...
- [goa]golang微服务框架学习(二)-- 代码自动生成
之前用过go语言的反射来做一些代码生成,参考这篇. 但是这种方式,入侵太强,需要执行对应的申明调用, 所以对GOA框架的自动生成非常感兴趣,于是仔细研究了一下,发现用的比较巧妙, 这里先卖个关子,先看 ...
- 文件参数化-utp框架之根据yaml文件自动生成python文件+utp运行用例
根据yaml文件自动生成python文件 utp框架: bin目录:存放执行文件(run.py) cases目录:存放生成的用例的python文件(该目录下的文件为根据data目录下的测试用例生成的p ...
- Spring Boot(九)Swagger2自动生成接口文档和Mock模拟数据
一.简介 在当下这个前后端分离的技术趋势下,前端工程师过度依赖后端工程师的接口和数据,给开发带来了两大问题: 问题一.后端接口查看难:要怎么调用?参数怎么传递?有几个参数?参数都代表什么含义? 问题二 ...
- Spring Boot Swagger2自动生成接口文档
一.简介 在当下这个前后端分离的技术趋势下,前端工程师过度依赖后端工程师的接口和数据,给开发带来了两大问题: 1.问题一.后端接口查看难:要怎么调用?参数怎么传递?有几个参数?参数都代表什么含义? 2 ...
随机推荐
- Hibernate 迫切连接和普通连接的区别
package com.baidu.test; import java.util.ArrayList;import java.util.LinkedHashSet;import java.util.L ...
- Android HelloChart Demo
这几天,要做一个图标的统计,自己去网上查了下,现在用的比较多的有三种,AChartEngine 是Google的一个开源图表库 这种我最开始就去导demo去了解他,不过里面是是英文,不好研究.我就放弃 ...
- Visual Studio 20周年,我和VS不得不说的故事(内含福利)
Visual Studio 2017正式版已如期发布(点击这里查看发布全记录)!自去年 11 月正式宣布 Visual Studio 项目之后,微软终于正式推出了“宇宙最强集成开发环境(IDE)”的最 ...
- strtok、strtok_s、strtok_r 字符串分割函数
1.strtok函数 函数原型:char * strtok (char *str, const char * delimiters); 参数:str,待分割的字符串(c-string):delimit ...
- 获取bing图片并自动设置为电脑桌面背景(C++完整开源程序)
众所周知,bing搜索网站首页每日会更新一张图片,张张漂亮(额,也有一些不合我口味的),特别适合用来做电脑壁纸. 我们想要将bing网站背景图片设置为电脑桌面背景的通常做法是: 上网,搜索bing 找 ...
- 属性property和字段的区别
在类中定义的一个成员变量叫字段,要把这个成员变量变成一个属性必须加上getter和setter方法
- ThinkPhp框架:验证码功能
Think\Verify类可以支持验证码的生成和验证功能. 为了显示这个验证码功能,第一要有控制器,再就是有方法,然后是显示的页面. 一.最简单的方式生成验证码 (1)我们还是继续在那个控制器编写方法 ...
- js面向对象总结
原型链 新创建的xiaoming的原型链是: xiaoming ----> Student.prototype ----> Object.prototype ----> null 也 ...
- 【树莓派】树莓派下WiFi断线自动重连
实现 WiFi 断线自动重连.原理是用 Python 监测网络是否断线,如果断线则重启网络服务. 1.Python 代码 autowifi.py,放在 /home/pi 目录下: #!/usr/bin ...
- Azure Messaging-ServiceBus Messaging消息队列技术系列6-消息回执
上篇博文中我们介绍了Azure Messaging的重复消息机制.At most once 和At least once. Azure Messaging-ServiceBus Messaging消息 ...