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