自动生成数学题型三 (框架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 ...
随机推荐
- 【Unity优化】我所理解的IL指令
版权声明:本文为博主原创文章,欢迎转载.请保留博主链接:http://blog.csdn.net/andrewfan 指令格式 英文单词全写 指令解释 nop no operation perform ...
- request.RequestContextListener
由于是使用spring mvc来做项目,因此脱离了HttpServletRequest作为参数,不能够直接使用request,要想使用request可以使用下面的方法: 在web点xml中配置一个监听 ...
- 某电商网站线上drbd+heartbeat+nfs配置
1.环境 nfs1.test.com 10.1.1.1 nfs2.test.com 10.1.1.2 2.drbd配置 安装drbd yum -y install gcc gcc-c++ make g ...
- conky 1.10以后的新配置格式
包装 config conky.config = { ... } 包装 TEXT conky.text = [[ ... ]] 每个 config 选项的变量和取值之间插入 "=" ...
- Spring Boot启动过程(五):Springboot内嵌Tomcat对象的start
标题和上一篇很像,所以特别强调一下,这个是Tomcat对象的. 从TomcatEmbeddedServletContainer的this.tomcat.start()开始,主要是利用Lifecycle ...
- netty-all maven中 缺少jzlib
在一个项目中引用 <dependency> <groupId>io.netty</groupId> <artifactId ...
- Linux命令语句秘籍
系统管理命令 stat 显示指定文件的详细信息,比ls更详细 who 显示在线登陆用户 whoami 显示当前操作用户 host ...
- js数据类型:引用和5种基本数据类型
javascript有2种基本数据类型:引用和基本数据类型 基本数据类型又有5个分类:布尔型.字符串.数值.undefined.NULL.
- linux 私房菜 CH5 笔记
知识点 linux 大小写敏感 接口的切换 [Ctrl] + [Alt] + [F1] ~ [F6] :文字接口登入 tty1 ~ tty6 终端机: [Ctrl] + [Alt] + [F7] :图 ...
- vue学习笔记 概述(一)
vue里 最常见的 最普遍的用法 应该是 var app = new Vue({ el: '#app', data: { message: 'Hello Vue!' }}) 下面把所有使用方法尽可能列 ...