四则运算出题java_java-四则运算,自动出题(4)

packagesum3;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.Scanner;//1.除法生成真分数

public classsum3 {static int sum2=10;//算数式的个数

static int sum1=4;static int R=100;//定义的参数控制题目中数值范围

static int m;//记录运算符个数//建立动态数组:操作数

static int[][]n1;//设置成运算式:数据源

static int[][]n2;//结果设置成int型的

static int[]m1;//记录用算过程的数组

static int[]m2;//运算符的选择

static String[]r1={"+","-","*","÷"};//运算符的操作:操作符

staticString[]s1;//运算符的存储:数据源

staticString[]s2;//括号的存储

static char[]r3;//链接数据库:

static String driverStr = "com.mysql.jdbc.Driver";static String connStr = "jdbc:mysql://127.0.0.1/number";static String dbusername = "root";static String dbpassword = "baohui";static Connection conn = null;static Statement stmt =null;public static void main(String[] args) throwsSQLException {try{

Class.forName(driverStr);

conn=DriverManager.getConnection(connStr, dbusername, dbpassword);

stmt=conn.createStatement();

System.out.println("数据连接success!");

}catch(Exception ex) {

System.out.println("数据连接失败!");

}

System.out.println("运算式是否需要括号:0 是 1否");

Scanner scan3=newScanner(System.in);int sum3=scan3.nextInt();//二维储存操作数

n1=new int[sum2][sum1];//操作

n2=new int[sum2][sum1];//存储

m1=new int[sum2];

m2=new int[sum1];//储存运算符

s1=new String[sum1];//操作

s2=new String[sum1];//存储//储存括号

r3=new char[sum1*2];//初始化

for(int i=0;i

{

r3[i]=' ';

}//生成操作数

for(int i=0;i

{for(int j=0;j

{

n1[i][j]=(int)(1+Math.random()*100);

n2[i][j]=n1[i][j];

}

}//运算开始

for(int i=0;i

{int number=0;//结果运算

int num2=0;//初始化左括号位置

int num3=0;//初始化右括号位置//设置括号位置

if(sum3==0)

{

num2=2 + 2*(int)(Math.random()*(sum1*2-6)/2);//2 4 6

num3=num2 +3 + 2*(int)(Math.random()*(sum1*2-2-num2)/2);//5 7 9

r3[num2]='(';

r3[num3]=')';

}int jishu=0;//设置运算符

for(int j1=0;j1

{int num=(int)(0 + Math.random()*4);//运算符的设置

s1[j1]=newString(r1[num]);

s2[j1]=newString(r1[num]);

}//括号内的算法

num2=num2/2;//左括号的数位置

num3=num3/2;//右括号的数位置//初始化运算符个数

m=sum1-1;//num2=num3时 括号消掉

while(num2

{//括号的乘除法

for(int k=num2;k

{if(s1[k].equals("*"))

{

number=n1[i][k]*n1[i][k+1];

n1[i][k]=number;//System.out.print(number+" ");

for(int j1=k;j1

{

s1[j1]=s1[j1+1];

n1[i][j1+1]=n1[i][j1+2];

}

s1[m-1]="+";

m--;

k--;

num3--;

}//乘法截至

else if(s1[k].equals("÷"))

{/*//处理括号内除数为0的情况

while(n1[i][k+1]==0)

{

n1[i][k+1]=(int)(1+Math.random()*100);

n2[i][k+1]=n1[i][k+1];

}

//除数 被除数大小(待修改)

if(n1[i][k]

{

n1[i][k+1]=n1[i][k];

n2[i][k+1]=n1[i][k+1];

}

else

{

n1[i][k]=n1[i][k+1]*(int)(1+Math.random()*(100/n1[i][k+1]-1));

}

n2[i][k+1]=n1[i][k+1];

n2[i][k]=n1[i][k];*/

while(s1[k-1].equals("÷")&&n1[i][k]==n1[i][k+1])

{

n1[i][k+1]=(int)(0+Math.random()*100);

n2[i][k+1]=n1[i][k+1];

}

number=n1[i][k]/n1[i][k+1];

n1[i][k]=number;//System.out.print(number+" ");

for(int j1=k;j1

{

s1[j1]=s1[j1+1];

n1[i][j1+1]=n1[i][j1+2];

}

s1[m-1]="+";

m--;

k--;

num3--;

}//除法截至

}//乘除循环截至//括号的加减法

for(int k=num2;k

{if(s1[k].equals("+"))

{

number=n1[i][k]+n1[i][k+1];

n1[i][k]=number;//System.out.print(number+" ");

for(int j1=k;j1

{

s1[j1]=s1[j1+1];

n1[i][j1+1]=n1[i][j1+2];

}

s1[m-1]="+";

m--;

k--;

num3--;

}//加法截至

else if(s1[k].equals("-"))

{/*//当括号内算式作为被除数结果为0时

while(s1[k-1].equals("÷")&&n1[i][k]==n1[i][k+1])

{

n1[i][k+1]=(int)(0+Math.random()*100);

n2[i][k+1]=n1[i][k+1];

}

//处理括号内减法为负数的情况

if(n1[i][k]

{

n1[i][k+1]=n1[i][k]-(int)(0+Math.random()*n1[i][k]);

n2[i][k+1]=n1[i][k+1];

}*/number=n1[i][k]-n1[i][k+1];

n1[i][k]=number;//System.out.print(number+" ");

for(int j1=k;j1

{

s1[j1]=s1[j1+1];

n1[i][j1+1]=n1[i][j1+2];

}

s1[m-1]="+";

m--;

k--;

num3--;

}//减法截止//System.out.print(number+" ");

}//加减循环止

}//括号内算法循环止//乘除法的运算

for(int k=0;k

{//如果加入乘法//进行插入

if(s1[k].equals("*"))

{

number=n1[i][k]*n1[i][k+1];

n1[i][k]=number;//System.out.print(number+" ");

for(int j1=k;j1

{

s1[j1]=s1[j1+1];

n1[i][j1+1]=n1[i][j1+2];

}

s1[m-1]="+";

m--;

k--;

}else if(s1[k].equals("÷"))

{

number=n1[i][k]/n1[i][k+1];

n1[i][k]=number;//System.out.print(number+" ");

for(int j1=k;j1

{

s1[j1]=s1[j1+1];

n1[i][j1+1]=n1[i][j1+2];

}

s1[m-1]="+";

m--;

k--;

}

}//乘除法运算至//加减法的运算

for(int k=0;k

{if(s1[k].equals("+"))

{

number=n1[i][k]+n1[i][k+1];

n1[i][k+1]=number;

}else if(s1[k].equals("-"))

{/*//处理括号内减法为负数的情况

if(n1[i][k]

{

n1[i][k+1]=n1[i][k]-(int)(0+Math.random()*n1[i][k]);

n2[i][k+1]=n1[i][k+1];

}*/number=n1[i][k]-n1[i][k+1];

n1[i][k+1]=number;

}//System.out.print(number+" ");

}//加减法运算至//运算式的输出

for(int j=0;j

{

System.out.print(r3[jishu]);

jishu++;

System.out.print(n2[i][j]);

System.out.print(r3[jishu]);

jishu++;if(j

{

System.out.print(s2[j]);

}elseSystem.out.print("=");

}//m2[i]=number;//储存结果

System.out.print(number);//输出结果

System.out.println();//清空数据库的前N个元素

String sql1="delete from number1 where index1="+(i+1);

Statement stmt=conn.createStatement();

stmt.execute(sql1);try{

String sql= "insert into number1 " +

"(operator1,operator2,operator3,operator4,end,number1,number2,number3,number4,index1) " +

" values (?,?,?,?,?,?,?,?,?,?)";

PreparedStatement psmt=null;

psmt=conn.prepareStatement(sql);

psmt.setString(1,r3[1]+s2[0]+r3[2]);

psmt.setString(2,r3[3]+s2[1]+r3[4]);

psmt.setString(3,r3[5]+s2[2]+r3[6]);

psmt.setString(4,r3[7]+"=");

psmt.setInt(5,number);

psmt.setInt(6,n2[i][0]);

psmt.setInt(7,n2[i][1]);

psmt.setInt(8,n2[i][2]);

psmt.setInt(9,n2[i][3]);

psmt.setInt(10, i+1);

psmt.executeUpdate();

System.out.println("插入成功!");

}catch(Exception ex) {

System.out.println(ex);

}//清空括号

for(int i1=0;i1

{

r3[i1]=' ';

}

}//all运算

}//class

}//main

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值