java-四则运算,自动出题(4)
生活随笔
收集整理的這篇文章主要介紹了
java-四则运算,自动出题(4)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
?
老師對(duì)程序又提出了系統(tǒng)性的要求:
1.定義參數(shù)生成的個(gè)數(shù)(完成)。
2.定義參數(shù)控制數(shù)值的范圍(完成)。
3.運(yùn)算結(jié)果不能產(chǎn)生負(fù)數(shù)。
4.e1/e2結(jié)果是真分?jǐn)?shù)。
5.運(yùn)算符不得超過(guò)3個(gè)。
6.檢驗(yàn)重復(fù)。
7.生成的題目?jī)?chǔ)存到數(shù)據(jù)庫(kù)中。
8.真分?jǐn)?shù)采用3/8形式,假分?jǐn)?shù)采用2‘3/8形式。
9.生成題目時(shí)計(jì)算答案。
10.支持一萬(wàn)到題目的生成。
11.支持判定答案的正誤并統(tǒng)計(jì)數(shù)量。
?
思路整理:
按著以前的實(shí)驗(yàn)思路來(lái),需要將結(jié)果儲(chǔ)存到數(shù)據(jù)庫(kù)中。
代碼如下:
package sum3;import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement; import java.util.Scanner;//1.除法生成真分?jǐn)?shù) public class sum3 {static int sum2=10;//算數(shù)式的個(gè)數(shù)static int sum1=4;static int R=100;//定義的參數(shù)控制題目中數(shù)值范圍static int m;//記錄運(yùn)算符個(gè)數(shù)//建立動(dòng)態(tài)數(shù)組:操作數(shù)static int[][]n1;//設(shè)置成運(yùn)算式:數(shù)據(jù)源static int[][]n2;//結(jié)果設(shè)置成int型的static int[]m1;//記錄用算過(guò)程的數(shù)組static int[]m2;//運(yùn)算符的選擇static String[]r1={"+","-","*","÷"};//運(yùn)算符的操作:操作符static String[]s1;//運(yùn)算符的存儲(chǔ):數(shù)據(jù)源static String[]s2;//括號(hào)的存儲(chǔ)static char[]r3;//鏈接數(shù)據(jù)庫(kù):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) throws SQLException {try{Class.forName(driverStr);conn = DriverManager.getConnection(connStr, dbusername, dbpassword);stmt = conn.createStatement();System.out.println("數(shù)據(jù)連接success!");} catch (Exception ex) {System.out.println("數(shù)據(jù)連接失敗!");} System.out.println("運(yùn)算式是否需要括號(hào):0 是 1否");Scanner scan3=new Scanner(System.in);int sum3=scan3.nextInt();//二維儲(chǔ)存操作數(shù)n1=new int[sum2][sum1];//操作n2=new int[sum2][sum1];//存儲(chǔ) m1=new int[sum2];m2=new int[sum1];//儲(chǔ)存運(yùn)算符s1=new String[sum1];//操作s2=new String[sum1];//存儲(chǔ)//儲(chǔ)存括號(hào)r3=new char[sum1*2];//初始化for(int i=0;i<sum1*2;i++){r3[i]=' ';}//生成操作數(shù)for(int i=0;i<sum2;i++){for(int j=0;j<sum1;j++){n1[i][j]=(int)(1+Math.random()*100); n2[i][j]=n1[i][j];}}//運(yùn)算開(kāi)始for(int i=0;i<sum2;i++){int number=0;//結(jié)果運(yùn)算int num2=0;//初始化左括號(hào)位置int num3=0;//初始化右括號(hào)位置//設(shè)置括號(hào)位置if(sum3==0){num2=2 + 2*(int)(Math.random()*(sum1*2-6)/2);//2 4 6num3=num2 +3 + 2*(int)(Math.random()*(sum1*2-2-num2)/2);//5 7 9 r3[num2]='(';r3[num3]=')';}int jishu=0;//設(shè)置運(yùn)算符for(int j1=0;j1<sum1;j1++){int num=(int)(0 + Math.random()*4);//運(yùn)算符的設(shè)置s1[j1]=new String(r1[num]);s2[j1]=new String(r1[num]);}//括號(hào)內(nèi)的算法num2=num2/2;//左括號(hào)的數(shù)位置num3=num3/2;//右括號(hào)的數(shù)位置//初始化運(yùn)算符個(gè)數(shù)m=sum1-1;//num2=num3時(shí) 括號(hào)消掉while(num2<num3){//括號(hào)的乘除法for(int k=num2;k<num3;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<m-1;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("÷")){/*//處理括號(hào)內(nèi)除數(shù)為0的情況while(n1[i][k+1]==0){n1[i][k+1]=(int)(1+Math.random()*100);n2[i][k+1]=n1[i][k+1];}//除數(shù) 被除數(shù)大小(待修改)if(n1[i][k]<n1[i][k+1]){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<m-1;j1++){s1[j1]=s1[j1+1];n1[i][j1+1]=n1[i][j1+2];}s1[m-1]="+";m--;k--;num3--;}//除法截至}//乘除循環(huán)截至//括號(hào)的加減法for(int k=num2;k<num3;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<m-1;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("-")){/*//當(dāng)括號(hào)內(nèi)算式作為被除數(shù)結(jié)果為0時(shí)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];}//處理括號(hào)內(nèi)減法為負(fù)數(shù)的情況if(n1[i][k]<n1[i][k+1]){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<m-1;j1++){s1[j1]=s1[j1+1];n1[i][j1+1]=n1[i][j1+2];}s1[m-1]="+";m--;k--;num3--;}//減法截止//System.out.print(number+" "); }//加減循環(huán)止 }//括號(hào)內(nèi)算法循環(huán)止//乘除法的運(yùn)算for(int k=0;k<sum1-1;k++){//如果加入乘法//進(jìn)行插入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<m-1;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<m-1;j1++){s1[j1]=s1[j1+1];n1[i][j1+1]=n1[i][j1+2];}s1[m-1]="+";m--;k--;}}//乘除法運(yùn)算至//加減法的運(yùn)算for(int k=0;k<m;k++){if(s1[k].equals("+")){number=n1[i][k]+n1[i][k+1];n1[i][k+1]=number;}else if(s1[k].equals("-")){/*//處理括號(hào)內(nèi)減法為負(fù)數(shù)的情況if(n1[i][k]<n1[i][k+1]){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+" ");}//加減法運(yùn)算至//運(yùn)算式的輸出for(int j=0;j<sum1;j++){System.out.print(r3[jishu]);jishu++;System.out.print(n2[i][j]);System.out.print(r3[jishu]);jishu++;if(j<sum1-1){System.out.print(s2[j]);}elseSystem.out.print("="); }//m2[i]=number;//儲(chǔ)存結(jié)果System.out.print(number);//輸出結(jié)果 System.out.println();//清空數(shù)據(jù)庫(kù)的前N個(gè)元素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);} //清空括號(hào)for(int i1=0;i1<sum1*2;i1++){r3[i1]=' ';}}//all運(yùn)算 }//class }//main?
?
實(shí)驗(yàn)結(jié)果:
實(shí)驗(yàn)總結(jié):學(xué)會(huì)了數(shù)據(jù)庫(kù)的插入和刪除操作,規(guī)范了代碼。
轉(zhuǎn)載于:https://www.cnblogs.com/suifengye/p/6581674.html
總結(jié)
以上是生活随笔為你收集整理的java-四则运算,自动出题(4)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Tomcat源码调试环境搭建
- 下一篇: 个人项目的设计与分析——类饿了么、美团式