
正文
java随机出题代码 java 随机
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
如何用Java实现随机出题?
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import oracle.jdbc.driver.OracleDriver;
public class GenPaperServlet extends HttpServlet
{
Connection conn;
Statement stmt;
ResultSet rs;
int total_question_num;
int total_question_in_paper;
int total_paper_num;
String curr_classid;
public GenPaperServlet()
{
conn = null;
stmt = null;
rs = null;
total_question_num = 0;
total_question_in_paper = 0;
total_paper_num = 0;
curr_classid = "";
}
public void doGet(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
throws ServletException, IOException
{
httpservletresponse.setContentType("text/html;charset=GBK");
PrintWriter printwriter = httpservletresponse.getWriter();
printwriter.println("htmlhead/headbodycenter");
printwriter.println("请以POST方式提交");
printwriter.println("/center/body/html");
printwriter.close();
}
public void doPost(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
throws ServletException, IOException
{
httpservletresponse.setContentType("text/html;charset=GBK");
PrintWriter printwriter = httpservletresponse.getWriter();
String s = httpservletrequest.getParameter("classid"); //"20"
String s1 = httpservletrequest.getParameter("paper_num"); //"1"
if(s == null || s1 == null)
{
printwriter.println("center");
printwriter.println("请按照正常方式提交数据br");
printwriter.println("a href=/test/admin/genpaper.jsp单击这里设置生成试卷的参数/a");
printwriter.println("/center");
}
total_paper_num = Integer.parseInt(s1);
curr_classid = s;
int i = 0;
if(!open_db(curr_classid))
{
printwriter.println("打开数据库错误!");
return;
}
if(!setParams(curr_classid))
{
System.out.println("设置系统参数错误!");
return;
}
if(!verify_QuertionLib())
{
printwriter.println("试题库中试卷不足,请增加新的试题!");
printwriter.println("班级代号:" + curr_classid);
printwriter.println("该班级一套试卷中的试题数:" + total_question_in_paper);
printwriter.println("目前题库中该班级的试题总数:" + total_question_num);
return;
}
i = genPaper(total_paper_num, curr_classid);
if(i == 0)
{
printwriter.println("生成试卷操作失败!");
return;
}
if(!updateOtherTable(i, curr_classid))
{
printwriter.println("更新相关表操作失败!");
return;
} else
{
printwriter.println("center");
printwriter.println("动态组卷成功!br");
printwriter.println("共生成了 " + i + " 套试卷br");
printwriter.println("a href=/test/admin/genpaper.jsp单击这里设置生成试卷的参数/a");
printwriter.println("/center");
return;
}
}
public boolean open_db(String s)
{
try
{
new OracleDriver();
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ora9", "scott", "tiger");
stmt = conn.createStatement();
}
catch(Exception exception)
{
return false;
}
return true;
}
public boolean setParams(String s)
{
String s1 = "";
try
{
String s2 = "select count(questionid) as countquestionid from test_question_lib ";
s2 = s2 + "where classid='" + s + "'";
rs = stmt.executeQuery(s2);
rs.next();
total_question_num = rs.getInt("countquestionid");
s2 = "select totalques from test_classinfo ";
s2 = s2 + "where classid='" + s + "'";
rs = stmt.executeQuery(s2);
rs.next();
total_question_in_paper = rs.getInt("totalques");
}
catch(Exception exception)
{
return false;
}
return true;
}
public boolean verify_QuertionLib()
{
return total_question_num = total_question_in_paper;
}
public boolean updateOtherTable(int i, String s)
{
int j = 0;
String s1 = "update test_classinfo set totalpaper=totalpaper+";
s1 = s1 + i + " where classid='" + s + "'";
try
{
j = stmt.executeUpdate(s1);
}
catch(Exception exception)
{
return false;
}
return j == 1;
}
public int genPaper(int i, String s)
{
boolean flag = false;
boolean flag1 = false;
boolean flag2 = false;
boolean flag3 = false;
String s1 = "";
try
{
int ai[] = new int[total_question_num];
int i1 = 0;
boolean flag4 = false;
String s2 = "select max(paper_id) as max_paper_id from test_paper_lib";
rs = stmt.executeQuery(s2);
rs.next();
int j = rs.getInt("max_paper_id") + 1;
s2 = "select questionid from test_question_lib where classid='" + s + "'";
for(rs = stmt.executeQuery(s2); rs.next();)
ai[i1++] = rs.getInt("questionid");
for(int k1 = 0; k1 i; k1++)
{
int k = ai.length; //8
for(int l1 = 0; l1 total_question_in_paper; l1++)
{
// int ai[] ={1 ,3 , 5 ,9 , 56,30 96 ,25};
int j1 = (int)Math.floor(Math.random() * (double)k); // 4
String s3 = "insert into test_paper_lib values(";
s3 = s3 + "test_seq_paper.nextval," + j + "," + ai[j1] + ")";
stmt.executeUpdate(s3);
int l = ai[k - 1];
ai[k - 1] = ai[j1];
ai[j1] = l;
k--;
}
j++;
}
}
catch(Exception exception)
{
return 0;
}
return i;
}
}
相关问答
Q1: 用Java编写计算机随机产生运算数20以内的力法题
import java.util.Scanner;
public class Test8 {
static int rcount=0,wcount=0;
static Scanner sc=new Scanner(System.in);
public static void arithmetic(){
int a=(int)(Math.random()*21);
int b=(int)(Math.random()*21);
int result=a+b;
System.out.print(a+"+"+b+"=");
//Scanner sc=new Scanner(System.in);
int c=sc.nextInt();
if(c==result){
System.out.println("恭喜,答对了!");
rcount++;
}else{
wcount++;
System.out.println("错了,正确答案是:"+result);
}
}
public static void main(String[] args){
boolean b=true;
// System.out.println();
while(b){
arithmetic();
System.out.println("继续答题请输入C,退出请输入Q");
String input=sc.next();
switch(input){
case "c":
case "C":
break;
case "q":
case "Q":
b=false;
System.out.println("您完成"+(rcount+wcount)+"道题目"+
"答对:"+rcount+",答错:"+wcount);
break;
//default:
//****
}
}
}
}
Q2: 编写JAVA程序,100以内的加减乘除(随机出题)
Random
r
=
new
Random();
switch(r.nextInt(4)){
case
0:
System.out.println("+");
break;
case
1:
System.out.println("-");
break;
case
2:
System.out.println("*");
break;
case
3:
System.out.println("/");
break;
default:
;
}
把相应的输出语句换成
方法就可以了
Q3: 在java中如何指定题型个数随机出题?
随机生成java随机出题代码,不就是取随机数吗java随机出题代码?
// 获取min - max之间 n个随机数java随机出题代码,然后排序
public static int[] orderedRandom(int min, int max, int n) {
if (n (max - min + 1) || max min) {
return null;
}
int[] result = new int[n];
int count = 0;
while (count n) {
int num = (int) (Math.random() * (max - min)) + min;
boolean flag = true;
for (int j = 0; j n; j++) {
if (num == result[j]) {
flag = false;
break;
}
}
if (flag) {
result[count] = num;
count++;
}
}
return Arrays.stream(result).sorted().toArray();
}
Q4: 关于java中 随机产生的问题 这段代码中int random = (int)(Math.random()*10); 是什么意思 为什么要 *10
Math.random()其实就是一个写好的函数方法,随机获得在0和1之间的一个数,而*10是代表这个数乘以10的到的数字,然后将这个数字转化成int类型数字,然后赋给前面的random
,然后指向swithc条件语句,如果的到的那个random
的值与case后面的值相同,就执行那个case里面的语句
Q5: 求教大佬!java实现随机出题
public class test {
public static void main(String[] args) {
// java实现随机出题
// 50以内的加减乘除法,用户解答后系统判断对错,用户输入-1时中止训练
Scanner scan = new Scanner(System.in);
char[] arr = {'+','-','*','÷'};
while (true) {
// 生成一个随机小数,范围从 2.25 到 2.75的两位小数
// double sum = Math.random()*(2.75-2.25)+2.25;
int a = (int) (Math.random()*(50-0)+0);
int b = (int) (Math.random()*(50-0)+0);
int f = (int) (Math.random()*(4-0)+0);
if (f== 1 a b) {
continue;
}
if (f== 3 a == 0) {
continue;
}
System.out.println("题目:"+a+arr[f]+b+"=\n请输入:");
double sum = 0;
if (f == 0) {
sum = a+b;
}
if (f == 1) {
sum = a-b;
}
if (f == 2) {
sum = a*b;
}
if (f == 3) {
sum = 1.0*a/b;
}
double s = scan.nextDouble();
if (s == -1) {
System.err.println("结束");
break;
}
if (s == sum) {
System.err.println("正确");
}else {
System.err.println("错误");
}
}
}
}
java随机出题代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java 随机、java随机出题代码的信息别忘了在本站进行查找喔。







