自动生成数学题型三 (框架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 ...
随机推荐
- Android Studio 代码自动提示无效
Android Studio代码自动提示无效(not available in Power Save mode)的解决办法 问题描述: 今天用Android studio敲代码,突然间就没有代码提示了 ...
- Java程序员入门:程序员究竟可以干多少年?
很多人都说程序员是青春饭,只能干到30岁. 然而事实真的如此么? 今天我们来探讨一下这个老话题,看看为了技术与编程执着究竟能走多远? 01年龄分布图 先来看一下程序员的年龄分布图: 我们可以看到程序员 ...
- java基础:数组的复制
- ajax 实现加载页面、删除、查看详细信息,以及bootstrap网页的美化
由于有些的程序员可能不是很会Photoshop,所以为了美化页面,我们可以借助工具bootstrap,实现起来相对就要比之前做的美观一些, 今天我用bootstrap把之前做的显示表格进行了一下美 ...
- 基于 Koa平台Node.js开发的KoaHub.js的跳过组件代码
koahub-skip koahub skip middleware koahub skip Conditionally skip a middleware when a condition is m ...
- java爬虫查找四川大学所有学院的网站的网址中的通知和新闻——以计算机学院为例
需求:查找四川大学所有学院的网站的网址中的通知和新闻——以计算机学院为例 流程图 3. 具体步骤 (1) 学院的主页为:http://cs.scu.edu.cn/ 获取该页面的所有内容(本文只获取新闻 ...
- Lucas定理学习(进阶中)
(1)Lucas定理:p为素数,则有: (2)证明: n=(ak...a2,a1,a0)p = (ak...a2,a1)p*p + a0 = [n/p]*p+a0,m=[m/p]*p+b0其次,我们 ...
- laravel的延迟消息队列
laravel的延迟消息队列 这篇来自于看到朋友转的58沈剑的一篇文章:1分钟实现"延迟消息"功能(http://mp.weixin.qq.com/s?__biz=MjM5ODYx ...
- SQL函数和SQL Server2008
1.绝对值 SQL:select abs(-1) value O:select abs(-1) value from dual 2.取整(大) S:select ceiling(-1.00 ...
- Day4 数据库的建立||数据库对外查询||使用命令行来操作数据库
###数据库的创建 建立一个项目 先进行测试,测试新项目是否可以成功运行 创建一个PersonContrary包,并建立一个Person类实现BaseColumns借口,在此类中添加所有的表的列名,并 ...