设计思想:
写好java程序后,需要将程序嵌入网页中,编写jsp脚本文件,使用数组来实现java和jsp的交互;session标签,可以实现网页之间参数的传递。
源程序代码(java):
import java.util.Scanner; import java.util.ArrayList; public class random_03{ public static void main(String[] args){ int N,i,N1,N2; int sum=0; String str; String hh; Scanner in=new Scanner(System.in); change fra=new change(); System.out.println("请输入需要打印的运算题的数目:"); N=in.nextInt(); System.out.println("请选择是否需要分数运算(Y/N):"); hh=in.next(); if(hh.equals("Y"))//分数运算 { for(i=0;i<N;i++) { int a,b,c,d; int s1,s2; a=(int) (Math.random()*100); b=(int) (Math.random()*99+1); //分母不等于0 c=(int) (Math.random()*100); d=(int) (Math.random()*99+1); int h=(int)(Math.random()*4); int aa=0,bb=0,cc=0,dd=0; //为了产生分数,分子也不可为零 if(a==0) a=(int) (Math.random()*99+1); if(c==0) c=(int) (Math.random()*99+1); //化简分数 int j; j=fra.change_(a,b); aa=a/j; bb=b/j; //化简分数 int p; p=fra.change_(c,d); cc=c/p; dd=d/p; int j1; int s11,s22; String str1; if(h==0) { //化简后,分母等于1时,直接输出分子 if(bb!=1&&dd!=1) System.out.println(aa+"/"+bb+" + "+cc+"/"+dd+"="); else if(bb==1&&dd!=1) System.out.println(aa+" + "+cc+"/"+dd+"="); else if(bb!=1&&dd==1) System.out.println(aa+"/"+bb+" + "+cc+"="); else System.out.println(aa+"+"+cc+"="); //分数加法计算 s1=aa*dd+bb*cc; s2=bb*dd; j1=fra.change_(s1,s2); s11=s1/j1; s22=s2/j1; str1=s11+"/"+s22; str=in.next(); if(fra.judge_FRA(str1,str)==1) { sum++; } System.out.println("正确"+sum+"道题."); } else if(h==1) { //不能产生负数 int t1,t2; if((a/b-c/d)<0) { t1=aa; aa=cc; cc=t1; t2=bb; bb=dd; dd=t2; } //化简后,分母等于1时,直接输出分子 if(bb!=1&&dd!=1) System.out.println(aa+"/"+bb+" - "+cc+"/"+dd+"="); else if(bb==1&&dd!=1) System.out.println(aa+" - "+cc+"/"+dd+"="); else if(bb!=1&&dd==1) System.out.println(aa+"/"+bb+" - "+cc+"="); else System.out.println(aa+"-"+cc+"="); //分数减法计算 s1=aa*dd-bb*cc; s2=bb*dd; j1=fra.change_(s1,s2); s11=s1/j1; s22=s2/j1; str1=s11+"/"+s22; str=in.next(); if(fra.judge_FRA(str1,str)==1) { sum++; } System.out.println("正确"+sum+"道题."); } else if(h==2) { //化简后,分母等于1时,直接输出分子 if(bb!=1&&dd!=1) System.out.println(aa+"/"+bb+" * "+cc+"/"+dd+"="); else if(bb==1&&dd!=1) System.out.println(aa+" * "+cc+"/"+dd+"="); else if(bb!=1&&dd==1) System.out.println(aa+"/"+bb+" * "+cc+"="); else System.out.println(aa+"*"+cc+"="); //分数乘法计算 s1=aa*cc; s2=bb*dd; j1=fra.change_(s1,s2); s11=s1/j1; s22=s2/j1; str1=s11+"/"+s22; str=in.next(); if(fra.judge_FRA(str1,str)==1) { sum++; } System.out.println("正确"+sum+"道题."); } else { //化简后,分母等于1时,直接输出分子 if(bb!=1&&dd!=1) System.out.println("("+aa+"/"+bb+")"+" / "+"("+cc+"/"+dd+")"+"="); else if(bb==1&&dd!=1) System.out.println(aa+" / "+"("+cc+"/"+dd+")"+"="); else if(bb!=1&&dd==1) System.out.println("("+aa+"/"+bb+")"+" / "+cc+"="); else System.out.println(aa+"/"+cc+"="); //分数除法计算 s1=aa*dd; s2=bb*cc; j1=fra.change_(s1,s2); s11=s1/j1; s22=s2/j1; str1=s11+"/"+s22; str=in.next(); if(fra.judge_FRA(str1,str)==1) { sum++; } System.out.println("正确"+sum+"道题."); } } } else if(hh.equals("N"))//整数运算 { System.out.println("请选择是否需要产生括号的运算题(Y/N):"); String str1,str2; double strr2; str=in.next(); double strr1=0; double ss; if(str.equals("Y")) { System.out.println("请输入数值范围:"); N1=in.nextInt(); for(i=0;i<N;i++) { ArrayList<Integer> al1=new ArrayList<Integer>(); //申请动态数组存放操作数 ArrayList<Integer> al2=new ArrayList<Integer>(); //申请动态数组存放运算符 int m,n,a,b; int j,k; int h1; h1=(int) (Math.random()*5+1); int h2=0; m=(int) (Math.random()*2+3); //限制操作数个数 n=m-1; //运算符个数 for(j=0;j<m;j++) { a=(int) (Math.random()*(N1-1)+1); al1.add(a); }//将操作数压入al1数组 for(k=0;k<n;k++) { b=(int) (Math.random()*4); al2.add(b); }//将运算符压入al2数组 if(m==3)//产生的操作数是3个 { if((int)al2.get(0)>(int)al2.get(1))//比较优先级 { if((int)al2.get(0)==1) { System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"+"+(int)al1.get(2)); strr1=(int)al1.get(0)-(int)al1.get(1)+(int)al1.get(2); } else if((int)al2.get(0)==2) { if((int)al2.get(1)==0) { System.out.print((int)al1.get(0)+"*"+"("+(int)al1.get(1)+"+"+(int)al1.get(2)+")"); strr1=(int)al1.get(0)*((int)al1.get(1)+(int)al1.get(2)); } else if((int)al2.get(1)==1) { System.out.print((int)al1.get(0)+"*"+"("+(int)al1.get(1)+"-"+(int)al1.get(2)+")"); strr1=(int)al1.get(0)*((int)al1.get(1)-(int)al1.get(2)); } } else if((int)al2.get(0)==3) { if((int)al2.get(1)==0) { h2=h1*((int)al1.get(1)+(int)al1.get(2)); System.out.print(h2+"/"+"("+(int)al1.get(1)+"+"+(int)al1.get(2)+")"); strr1=h1; } else if((int)al2.get(1)==1) { if((int)al1.get(1)>(int)al1.get(2)) { h2=h1*((int)al1.get(1)-(int)al1.get(2)); System.out.print((h2+"/"+"("+(int)al1.get(1)+"-"+(int)al1.get(2)+")")); strr1=h1; } else { h2=h1*((int)al1.get(2)-(int)al1.get(1)); System.out.print((h2+"/"+"("+(int)al1.get(1)+"-"+(int)al1.get(2)+")")); strr1=h1; } } if((int)al2.get(1)==2) { h2=h1*(int)al1.get(1); System.out.print((h2+"/"+(int)al1.get(1)+"*"+(int)al1.get(2))); strr1=h1*(int)al1.get(2); } } } else if((int)al2.get(0)<(int)al2.get(1)||(int)al2.get(0)==(int)al2.get(1))//比较优先级 { if((int)al2.get(0)==0) { if((int)al2.get(1)==0) { System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"+"+(int)al1.get(2)); strr1=(int)al1.get(0)+(int)al1.get(1)+(int)al1.get(2); } else if((int)al2.get(1)==1) { System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"-"+(int)al1.get(2)); strr1=(int)al1.get(0)+(int)al1.get(1)-(int)al1.get(2); } else if((int)al2.get(1)==2) { System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"*"+(int)al1.get(2)); strr1=(int)al1.get(0)+(int)al1.get(1)*(int)al1.get(2); } else if((int)al2.get(1)==3) { if((int)al1.get(1)>=(int)al1.get(2)) { h2=h1*(int)al1.get(2); System.out.print((int)al1.get(0)+"+"+h2+"/"+(int)al1.get(2)); strr1=(int)al1.get(0)+h1; } else { h2=h1*(int)al1.get(1); System.out.print((int)al1.get(0)+"+"+h2+"/"+(int)al1.get(1)); strr1=(int)al1.get(0)+h1; } } } else if((int)al2.get(0)==1) { if((int)al2.get(1)==1) { System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"-"+(int)al1.get(2)); strr1=(int)al1.get(0)-(int)al1.get(1)-(int)al1.get(2); } else if((int)al2.get(1)==2) { System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"*"+(int)al1.get(2)); strr1=(int)al1.get(0)-(int)al1.get(1)*(int)al1.get(2); } else if((int)al2.get(1)==3) { if((int)al1.get(1)>=(int)al1.get(2)) { h2=h1*(int)al1.get(2); System.out.print((int)al1.get(0)+"-"+h2+"/"+(int)al1.get(2)); strr1=(int)al1.get(0)-h1; } else { h2=h1*(int)al1.get(1); System.out.print((int)al1.get(0)+"-"+h2+"/"+(int)al1.get(1)); strr1=(int)al1.get(0)-h1; } } } else if((int)al2.get(0)==2) { if((int)al2.get(1)==2) { System.out.print((int)al1.get(0)+"*"+(int)al1.get(1)+"*"+(int)al1.get(2)); strr1=(int)al1.get(0)*(int)al1.get(1)*(int)al1.get(2); } else if((int)al2.get(1)==3) { h2=h1*(int)al1.get(2); System.out.print((int)al1.get(0)+"*"+h2+"/"+(int)al1.get(2)); strr1=(int)al1.get(0)*h2/(int)al1.get(2); } } else if((int)al2.get(0)==3) { if((int)al1.get(1)>=(int)al1.get(2)) { h2=h1*(int)al1.get(2); int h22=0; h22=h1*(h2/(int)al1.get(2)); System.out.print(h22+"/"+"("+(h2+"/"+(int)al1.get(2)+")")); strr1=h1; } else { h2=h1*(int)al1.get(1); int h22=0; h22=h1*(h2/(int)al1.get(1)); System.out.print(h22+"/"+"("+h2+"/"+(int)al1.get(1)+")"); strr1=h1; } } } System.out.print("="); ss=in.nextDouble(); if(fra.judge(strr1,ss)==1) { sum++; } System.out.println("正确"+sum+"道题."); } else if(m==4)//产生的操作数等于4个 { double sumss=0; int r=0; double list[]=new double[2];//存放和 for(r=0;r<2;r++) { list[r]=0; } System.out.print("("); if((int)al2.get(0)>(int)al2.get(1))//比较运算符优先级 { if((int)al2.get(0)==1)//第一个出现减法 { if(((int)al1.get(0)-(int)al1.get(1))>=0) { System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"+"+(int)al1.get(2)); list[0]=(int)al1.get(0)-(int)al1.get(1)+(int)al1.get(2); } else { System.out.print((int)al1.get(1)+"-"+(int)al1.get(0)+"+"+(int)al1.get(2)); list[0]=(int)al1.get(1)-(int)al1.get(0)+(int)al1.get(2); } } else if((int)al2.get(0)==2)//第一个出现乘法 { if((int)al2.get(1)==0) { System.out.print((int)al1.get(0)+"*"+"("+(int)al1.get(1)+"+"+(int)al1.get(2)+")"); list[0]=(int)al1.get(0)*+((int)al1.get(1)+(int)al1.get(2)); } else if((int)al2.get(1)==1) { if(((int)al1.get(1)-(int)al1.get(2))>=0) { System.out.print((int)al1.get(0)+"*"+"("+(int)al1.get(1)+"-"+(int)al1.get(2)+")"); list[0]=(int)al1.get(0)*((int)al1.get(1)-(int)al1.get(2)); } else { System.out.print((int)al1.get(0)+"*"+"("+(int)al1.get(2)+"-"+(int)al1.get(1)+")"); list[0]=(int)al1.get(0)*((int)al1.get(2)-(int)al1.get(1)); } } } else if((int)al2.get(0)==3)//第一个出现除法 { if((int)al2.get(1)==0) { h2=h1*((int)al1.get(1)+(int)al1.get(2)); System.out.print(h2+"/"+"("+(int)al1.get(1)+"+"+(int)al1.get(2)+")"); list[0]=h1; } else if((int)al2.get(1)==1) { if((int)al1.get(1)==(int)al1.get(2)) { h2=h1*(((int)al1.get(1)+1)-(int)al1.get(2)); System.out.print(h2+"/"+"("+((int)al1.get(1)+1)+"-"+(int)al1.get(2)+")"); list[0]=h1; } else { if(((int)al1.get(1)-(int)al1.get(2))>0) { h2=h1*((int)al1.get(1)-(int)al1.get(2)); System.out.print(h2+"/"+"("+(int)al1.get(1)+"-"+(int)al1.get(2)+")"); list[0]=h1; } else { h2=h1*((int)al1.get(2)-(int)al1.get(1)); System.out.print(h2+"/"+"("+(int)al1.get(2)+"-"+(int)al1.get(1)+")"); list[0]=h1; } } } if((int)al2.get(1)==2) { h2=h1*(int)al1.get(1); System.out.print(h2+"/"+(int)al1.get(1)+"*"+(int)al1.get(2)); list[0]=h1*(int)al1.get(2); } } } else if((int)al2.get(0)<(int)al2.get(1)||(int)al2.get(0)==(int)al2.get(1)) { if((int)al2.get(0)==0) { if((int)al2.get(1)==0)//第一个出现加法 { System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"+"+(int)al1.get(2)); list[0]=(int)al1.get(0)+(int)al1.get(1)+(int)al1.get(2); } else if((int)al2.get(1)==1) { if((int)al1.get(1)-(int)al1.get(2)>=0) { System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"-"+(int)al1.get(2)); list[0]=(int)al1.get(0)+(int)al1.get(1)-(int)al1.get(2); } else { System.out.print((int)al1.get(0)+"+"+(int)al1.get(2)+"-"+(int)al1.get(1)); list[0]=(int)al1.get(0)+(int)al1.get(2)-(int)al1.get(1); } } else if((int)al2.get(1)==2) { System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"*"+(int)al1.get(2)); list[0]=(int)al1.get(0)+(int)al1.get(1)*(int)al1.get(2); } else if((int)al2.get(1)==3) { if((int)al1.get(1)>(int)al1.get(2)) { h2=h1*(int)al1.get(2); System.out.print((int)al1.get(0)+"+"+h2+"/"+(int)al1.get(2)); list[0]=(int)al1.get(0)+h1; } else { h2=h1*(int)al1.get(1); System.out.print((int)al1.get(0)+"+"+h2+"/"+(int)al1.get(1)); list[0]=(int)al1.get(0)+h1; } } } else if((int)al2.get(0)==1)//第一个出现减法 { if((int)al2.get(1)==1) { if(((int)al1.get(0)-(int)al1.get(1))>=0) { if(((int)al1.get(0)-(int)al1.get(1)-(int)al1.get(2))>=0) { System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"-"+(int)al1.get(2)); list[0]=(int)al1.get(0)-(int)al1.get(1)-(int)al1.get(2); } else { System.out.print((int)al1.get(2)+"-"+(int)al1.get(0)+"+"+(int)al1.get(1)); list[0]=(int)al1.get(2)-(int)al1.get(0)-(int)al1.get(1); } } else { if(((int)al1.get(1)-(int)al1.get(0)-(int)al1.get(2))>=0) { System.out.print((int)al1.get(1)+"-"+(int)al1.get(0)+"-"+(int)al1.get(2)); list[0]=(int)al1.get(1)-(int)al1.get(0)-(int)al1.get(2); } else { System.out.print((int)al1.get(2)+"-"+(int)al1.get(1)+"+"+(int)al1.get(0)); list[0]=(int)al1.get(2)-(int)al1.get(1)-(int)al1.get(0); } } } else if((int)al2.get(1)==2) { if(((int)al1.get(0)-(int)al1.get(1)*(int)al1.get(2))>=0) { System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"*"+(int)al1.get(2)); list[0]=(int)al1.get(0)-(int)al1.get(1)*(int)al1.get(2); } else { System.out.print((int)al1.get(1)+"*"+(int)al1.get(2)+"-"+(int)al1.get(0)); list[0]=(int)al1.get(1)*(int)al1.get(2)-(int)al1.get(0); } } else if((int)al2.get(1)==3) { if((int)al1.get(1)>(int)al1.get(2)) { if(((int)al1.get(0)-(int)al1.get(1)/(int)al1.get(2))>=0) { h2=h1*(int)al1.get(2); System.out.print((int)al1.get(0)+"-"+h2+"/"+(int)al1.get(2)); list[0]=(int)al1.get(0)-h1; } else { h2=h1*(int)al1.get(2); System.out.print(h2+"/"+(int)al1.get(2)+"-"+(int)al1.get(0)); list[0]=h1-(int)al1.get(0); } } else { if(((int)al1.get(0)-(int)al1.get(2)/(int)al1.get(1))>=0) { h2=h1*(int)al1.get(1); System.out.print((int)al1.get(0)+"-"+h2+"/"+(int)al1.get(1)); list[0]=(int)al1.get(0)-h1; } else { h2=h1*(int)al1.get(1); System.out.print(h2+"/"+(int)al1.get(1)+"-"+(int)al1.get(0)); list[0]=h1-(int)al1.get(0); } } } } else if((int)al2.get(0)==2)//第一个出现乘法 { if((int)al2.get(1)==2) { System.out.print((int)al1.get(0)+"*"+(int)al1.get(1)+"*"+(int)al1.get(2)); list[0]=(int)al1.get(0)*(int)al1.get(1)*(int)al1.get(2); } else if((int)al2.get(1)==3) { if((int)al1.get(1)>(int)al1.get(2)) { h2=h1*(int)al1.get(2); System.out.print((int)al1.get(0)+"*"+h2+"/"+(int)al1.get(2)); list[0]=(int)al1.get(0)*h1; } else { h2=h1*(int)al1.get(1); System.out.print((int)al1.get(0)+"*"+h2+"/"+(int)al1.get(1)); list[0]=(int)al1.get(0)*h1; } } } else if((int)al2.get(0)==3)//第一个出现除法 { if((int)al1.get(1)>(int)al1.get(2)) { h2=h1*(int)al1.get(2); int hh2=0; hh2=h1*((int)al1.get(1)/(int)al1.get(2)); System.out.print(hh2+"/"+"("+h2+"/"+(int)al1.get(2)+")"); list[0]=h1; } else { h2=h1*(int)al1.get(1); int hh2=0; hh2=h1*((int)al1.get(2)/(int)al1.get(1)); System.out.print(hh2+"/"+"("+h2+"/"+(int)al1.get(1)+")"); list[0]=h1; } } } System.out.print(")"); list[1]=(int)al1.get(3); if((int)al2.get(2)==0) { System.out.print("+"+(int)al1.get(3)); sumss=list[0]+(int)al1.get(3); } else if((int)al2.get(2)==1) { if(list[0]-list[1]>=0) { System.out.print("-"+(int)al1.get(3)); sumss=list[0]-(int)al1.get(3); } else if(list[0]<list[1]) { System.out.print("+"+(int)al1.get(3)); sumss=(int)al1.get(3)+list[0]; } } else if((int)al2.get(2)==2) { System.out.print("*"+(int)al1.get(3)); sumss=list[0]*(int)al1.get(3); } else if((int)al2.get(2)==3) { System.out.print("*"+(int)al1.get(3)); sumss=list[0]*(int)al1.get(3); } System.out.print("="); strr1=in.nextDouble(); if(fra.judge(sumss,strr1)==1) { sum++; } System.out.println(sumss); System.out.println("正确"+sum+"道题."); } } } else if(str.equals("N"))//不需要产生括号 { System.out.println("请输入数值范围:"); N2=in.nextInt(); System.out.println("请选择是否有无乘除法的运算题(Y/N):"); str1=in.next(); if(str1.equals("Y"))// 有乘除法 { System.out.println("请选择是否有无余数的运算题(Y/N):"); str2=in.next(); if(str2.equals("Y"))//需要有余数 { for(i=0;i<N;i++) { int a,b,c,c1,h; a=(int) (Math.random()*N2); b=(int) (Math.random()*N2); h=(int) (Math.random()*4); //控制加减运算符 c=(int) (Math.random()*(N2-1)+1); c1=(int) (Math.random()*10+1); //控制倍数 if(h==0) { System.out.println(a+"+"+b+"="); double s; s=a+b; strr2=in.nextDouble(); if(fra.judge(s,strr2)==1) { sum++; } } if(h==1) { double s; if(a-b>=0) { System.out.println(a+"-"+b+"="); s=a-b; } else { System.out.println(b+"-"+a+"="); s=b-a; } strr2=in.nextDouble(); if(fra.judge(s,strr2)==1) { sum++; } } if(h==2) { System.out.println(a+"*"+b+"="); double s; s=a*b; strr2=in.nextDouble(); if(fra.judge(s,strr2)==1) { sum++; } } if(h==3) { int d,k,dd,cc; int j1; k=(int) (Math.random()*(c-1)+1); //必须产生余数 d=c*c1+k; System.out.println(d+"/"+c+"="); String s = null; String result; if(c!=1) s=d+"/"+c; if(c==1) s=String.valueOf(d); result=in.next(); if(fra.judge_FRA(s,result)==1) { sum++; } } } System.out.println("正确"+sum+"道题"); } else if(str2.equals("N"))//不需要产生余数 { for(i=0;i<N;i++) { int a,b,c,c1,h; a=(int) (Math.random()*N2); b=(int) (Math.random()*N2); h=(int) (Math.random()*4); //控制加减运算符 c=(int) (Math.random()*(N2-1)+1); c1=(int) (Math.random()*10+1); //控制倍数 if(h==0) { System.out.println(a+"+"+b+"="); double s; s=a+b; strr2=in.nextDouble(); if(fra.judge(s,strr2)==1) { sum++; } } if(h==1) { System.out.println(a+"-"+b+"="); double s; s=a-b; strr2=in.nextDouble(); if(fra.judge(s,strr2)==1) { sum++; } } if(h==2)//乘法 { System.out.println(a+"*"+b+"="); double s; s=a*b; strr2=in.nextDouble(); if(fra.judge(s,strr2)==1) { sum++; } } if(h==3)//除法,不产生余数 { int d; //不能产生余数 d=c*c1; System.out.println(d+"/"+c+"="); double s; s=d/c; strr2=in.nextDouble(); if(fra.judge(s,strr2)==1) { sum++; } } } System.out.println("正确"+sum+"道题"); } } else if(str1.equals("N"))//没有乘除法 { int a,b,h; for(i=0;i<N;i++) { a=(int) (Math.random()*N2); b=(int) (Math.random()*N2); h=(int) (Math.random()*2); //控制运算符 if(h==0) { System.out.println(a+"+"+b+"="); double s; s=a+b; strr2=in.nextDouble(); if(fra.judge(s,strr2)==1) { sum++; } } if(h==1) { System.out.println(a+"-"+b+"="); double s; s=a-b; strr2=in.nextDouble(); if(fra.judge(s,strr2)==1) { sum++; } } } System.out.println("正确"+sum+"道题"); } } } in.close(); } } class change{ Scanner in=new Scanner(System.in); int change_(int a,int b)//化简分数 { int r1; if(a>b) { r1=b; } else r1=a; int k=0; for(int j=1;j<=r1;j++) { if(a%j==0&&b%j==0) { k=j; } } return k; } int judge_FRA(String str1,String str)//分数运算判断对错,计算正确次数 { int ju; if(str.equals(str1)) { System.out.println("正确"); ju=1; } else { System.out.println("错误"); ju=0; } return ju; } int judge(double s,double ss)//整数判断对错,计算正确次数 { int ju; if(s==ss) { System.out.println("正确"); ju=1; } else { System.out.println("错误"); ju=0; } return ju; } }
结果截图:
NewFile.html
<!DOCTYPE html> <html> <head> <title>首页</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <meta name="keywords" content="keyword1,keyword2,keyword3"> <meta name="description" content="this is my page"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> </head> <body background="images/A1.jpg"> <h1 align="center">二柱子四则运算</h1> <!-- 传递参数的值给NewFile.jsp处理 --> <form action="NewFile.jsp" method="post"> <!-- 互斥选择,值只能有一个 --> <center> <br>请选择数值范围的最小值: <input type="radio" checked name="TopNumber" value=20>20 <input type="radio" name="TopNumber" value=30>30 <input type="radio" name="TopNumber" value=50>50 <input type="radio" name="TopNumber" value=80>80 <input type="radio" name="TopNumber" value=100>100 <br> <br>请选择数值范围的最大值: <input type="radio" checked name="BaseNumber" value=0>0 <input type="radio" name="BaseNumber" value=1>1 <input type="radio" name="BaseNumber" value=3>3 <input type="radio" name="BaseNumber" value=5>5 <input type="radio" name="BaseNumber" value=10>10 <br> <!-- 多项选择,值可以有多个,在jsp中用数组保存 --> <br>请在以下选项中打勾(可多选): <input type="checkbox" name="function" value=1>有乘除 <input type="checkbox" name="function" value=2>无余数 <input type="checkbox" name="function" value=3>有括号 <br> <br> <input type="submit" name="submit" value="进入答题"> </center> </form> </body> </html>
NewFile.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ page import="ttes.*"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>答题</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body background="images/A2.jpg">
<%
String[] s=new String[30];
float k[]=new float[30];
random3 a=new random3();
request.setCharacterEncoding("UTF-8");
// String[] function = request.getParameterValues("function");
int N1;
N1=request.getParameter("N1");
a.SetValue(N1,1);
if(function!=null){
/* for(int i=0;i<function.length;i++){
if(function[i].equals("1"))
{
a.SetValue1(1);
}
if(function[i].equals("2"))
{
a.SetValue2(1);
}
if(function[i].equals("3"))
{
a.SetValue3(0);
}
}*/
}
%>
<form action="Myjsp.jsp" method="post">
<center>
<%
a.main();
float temp;
String[] se=new String[30];
for(int i=0;i<30;i++){
s[i]=a.sumss; //求和
se[i]="name";
se[i]=se[i]+i;
k[i]=a.strr2; //正确答案
out.print("<tr>"+s[i]+"</tr>");
out.println("<br>");
%>
<input type="text" name=<%=se[i] %>><br>
<%
}
session.setAttribute( "v1",s);
session.setAttribute( "v2",k);
%>
<br><input type="submit" name="submit" value="提交">
<% %>
</center>
</form>
</body>
</html>
random3.java
package ttes; public class random3{ public static void main(){ int N,i,N1,N2; int sum=0; String str; String hh; Scanner in=new Scanner(System.in); change fra=new change(); System.out.println("请输入需要打印的运算题的数目:"); N=in.nextInt(); System.out.println("请选择是否需要分数运算(Y/N):"); hh=in.next(); if(hh.equals("Y"))//分数运算 { for(i=0;i<N;i++) { int a,b,c,d; int s1,s2; a=(int) (Math.random()*100); b=(int) (Math.random()*99+1); //分母不等于0 c=(int) (Math.random()*100); d=(int) (Math.random()*99+1); int h=(int)(Math.random()*4); int aa=0,bb=0,cc=0,dd=0; //为了产生分数,分子也不可为零 if(a==0) a=(int) (Math.random()*99+1); if(c==0) c=(int) (Math.random()*99+1); //化简分数 int j; j=fra.change_(a,b); aa=a/j; bb=b/j; //化简分数 int p; p=fra.change_(c,d); cc=c/p; dd=d/p; int j1; int s11,s22; String str1; if(h==0) { //化简后,分母等于1时,直接输出分子 if(bb!=1&&dd!=1) System.out.println(aa+"/"+bb+" + "+cc+"/"+dd+"="); else if(bb==1&&dd!=1) System.out.println(aa+" + "+cc+"/"+dd+"="); else if(bb!=1&&dd==1) System.out.println(aa+"/"+bb+" + "+cc+"="); else System.out.println(aa+"+"+cc+"="); //分数加法计算 s1=aa*dd+bb*cc; s2=bb*dd; j1=fra.change_(s1,s2); s11=s1/j1; s22=s2/j1; str1=s11+"/"+s22; str=in.next(); if(fra.judge_FRA(str1,str)==1) { sum++; } System.out.println("正确"+sum+"道题."); } else if(h==1) { //不能产生负数 int t1,t2; if((a/b-c/d)<0) { t1=aa; aa=cc; cc=t1; t2=bb; bb=dd; dd=t2; } //化简后,分母等于1时,直接输出分子 if(bb!=1&&dd!=1) System.out.println(aa+"/"+bb+" - "+cc+"/"+dd+"="); else if(bb==1&&dd!=1) System.out.println(aa+" - "+cc+"/"+dd+"="); else if(bb!=1&&dd==1) System.out.println(aa+"/"+bb+" - "+cc+"="); else System.out.println(aa+"-"+cc+"="); //分数减法计算 s1=aa*dd-bb*cc; s2=bb*dd; j1=fra.change_(s1,s2); s11=s1/j1; s22=s2/j1; str1=s11+"/"+s22; str=in.next(); if(fra.judge_FRA(str1,str)==1) { sum++; } System.out.println("正确"+sum+"道题."); } else if(h==2) { //化简后,分母等于1时,直接输出分子 if(bb!=1&&dd!=1) System.out.println(aa+"/"+bb+" * "+cc+"/"+dd+"="); else if(bb==1&&dd!=1) System.out.println(aa+" * "+cc+"/"+dd+"="); else if(bb!=1&&dd==1) System.out.println(aa+"/"+bb+" * "+cc+"="); else System.out.println(aa+"*"+cc+"="); //分数乘法计算 s1=aa*cc; s2=bb*dd; j1=fra.change_(s1,s2); s11=s1/j1; s22=s2/j1; str1=s11+"/"+s22; str=in.next(); if(fra.judge_FRA(str1,str)==1) { sum++; } System.out.println("正确"+sum+"道题."); } else { //化简后,分母等于1时,直接输出分子 if(bb!=1&&dd!=1) System.out.println("("+aa+"/"+bb+")"+" / "+"("+cc+"/"+dd+")"+"="); else if(bb==1&&dd!=1) System.out.println(aa+" / "+"("+cc+"/"+dd+")"+"="); else if(bb!=1&&dd==1) System.out.println("("+aa+"/"+bb+")"+" / "+cc+"="); else System.out.println(aa+"/"+cc+"="); //分数除法计算 s1=aa*dd; s2=bb*cc; j1=fra.change_(s1,s2); s11=s1/j1; s22=s2/j1; str1=s11+"/"+s22; str=in.next(); if(fra.judge_FRA(str1,str)==1) { sum++; } System.out.println("正确"+sum+"道题."); } } } else if(hh.equals("N"))//整数运算 { System.out.println("请选择是否需要产生括号的运算题(Y/N):"); String str1,str2; double strr2; str=in.next(); double strr1=0; double ss; if(str.equals("Y")) { System.out.println("请输入数值范围:"); N1=in.nextInt(); for(i=0;i<N;i++) { ArrayList<Integer> al1=new ArrayList<Integer>(); //申请动态数组存放操作数 ArrayList<Integer> al2=new ArrayList<Integer>(); //申请动态数组存放运算符 int m,n,a,b; int j,k; int h1; h1=(int) (Math.random()*5+1); int h2=0; m=(int) (Math.random()*2+3); //限制操作数个数 n=m-1; //运算符个数 for(j=0;j<m;j++) { a=(int) (Math.random()*(N1-1)+1); al1.add(a); }//将操作数压入al1数组 for(k=0;k<n;k++) { b=(int) (Math.random()*4); al2.add(b); }//将运算符压入al2数组 if(m==3)//产生的操作数是3个 { if((int)al2.get(0)>(int)al2.get(1))//比较优先级 { if((int)al2.get(0)==1) { System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"+"+(int)al1.get(2)); strr1=(int)al1.get(0)-(int)al1.get(1)+(int)al1.get(2); } else if((int)al2.get(0)==2) { if((int)al2.get(1)==0) { System.out.print((int)al1.get(0)+"*"+"("+(int)al1.get(1)+"+"+(int)al1.get(2)+")"); strr1=(int)al1.get(0)*((int)al1.get(1)+(int)al1.get(2)); } else if((int)al2.get(1)==1) { System.out.print((int)al1.get(0)+"*"+"("+(int)al1.get(1)+"-"+(int)al1.get(2)+")"); strr1=(int)al1.get(0)*((int)al1.get(1)-(int)al1.get(2)); } } else if((int)al2.get(0)==3) { if((int)al2.get(1)==0) { h2=h1*((int)al1.get(1)+(int)al1.get(2)); System.out.print(h2+"/"+"("+(int)al1.get(1)+"+"+(int)al1.get(2)+")"); strr1=h1; } else if((int)al2.get(1)==1) { if((int)al1.get(1)>(int)al1.get(2)) { h2=h1*((int)al1.get(1)-(int)al1.get(2)); System.out.print((h2+"/"+"("+(int)al1.get(1)+"-"+(int)al1.get(2)+")")); strr1=h1; } else { h2=h1*((int)al1.get(2)-(int)al1.get(1)); System.out.print((h2+"/"+"("+(int)al1.get(1)+"-"+(int)al1.get(2)+")")); strr1=h1; } } if((int)al2.get(1)==2) { h2=h1*(int)al1.get(1); System.out.print((h2+"/"+(int)al1.get(1)+"*"+(int)al1.get(2))); strr1=h1*(int)al1.get(2); } } } else if((int)al2.get(0)<(int)al2.get(1)||(int)al2.get(0)==(int)al2.get(1))//比较优先级 { if((int)al2.get(0)==0) { if((int)al2.get(1)==0) { System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"+"+(int)al1.get(2)); strr1=(int)al1.get(0)+(int)al1.get(1)+(int)al1.get(2); } else if((int)al2.get(1)==1) { System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"-"+(int)al1.get(2)); strr1=(int)al1.get(0)+(int)al1.get(1)-(int)al1.get(2); } else if((int)al2.get(1)==2) { System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"*"+(int)al1.get(2)); strr1=(int)al1.get(0)+(int)al1.get(1)*(int)al1.get(2); } else if((int)al2.get(1)==3) { if((int)al1.get(1)>=(int)al1.get(2)) { h2=h1*(int)al1.get(2); System.out.print((int)al1.get(0)+"+"+h2+"/"+(int)al1.get(2)); strr1=(int)al1.get(0)+h1; } else { h2=h1*(int)al1.get(1); System.out.print((int)al1.get(0)+"+"+h2+"/"+(int)al1.get(1)); strr1=(int)al1.get(0)+h1; } } } else if((int)al2.get(0)==1) { if((int)al2.get(1)==1) { System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"-"+(int)al1.get(2)); strr1=(int)al1.get(0)-(int)al1.get(1)-(int)al1.get(2); } else if((int)al2.get(1)==2) { System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"*"+(int)al1.get(2)); strr1=(int)al1.get(0)-(int)al1.get(1)*(int)al1.get(2); } else if((int)al2.get(1)==3) { if((int)al1.get(1)>=(int)al1.get(2)) { h2=h1*(int)al1.get(2); System.out.print((int)al1.get(0)+"-"+h2+"/"+(int)al1.get(2)); strr1=(int)al1.get(0)-h1; } else { h2=h1*(int)al1.get(1); System.out.print((int)al1.get(0)+"-"+h2+"/"+(int)al1.get(1)); strr1=(int)al1.get(0)-h1; } } } else if((int)al2.get(0)==2) { if((int)al2.get(1)==2) { System.out.print((int)al1.get(0)+"*"+(int)al1.get(1)+"*"+(int)al1.get(2)); strr1=(int)al1.get(0)*(int)al1.get(1)*(int)al1.get(2); } else if((int)al2.get(1)==3) { h2=h1*(int)al1.get(2); System.out.print((int)al1.get(0)+"*"+h2+"/"+(int)al1.get(2)); strr1=(int)al1.get(0)*h2/(int)al1.get(2); } } else if((int)al2.get(0)==3) { if((int)al1.get(1)>=(int)al1.get(2)) { h2=h1*(int)al1.get(2); int h22=0; h22=h1*(h2/(int)al1.get(2)); System.out.print(h22+"/"+"("+(h2+"/"+(int)al1.get(2)+")")); strr1=h1; } else { h2=h1*(int)al1.get(1); int h22=0; h22=h1*(h2/(int)al1.get(1)); System.out.print(h22+"/"+"("+h2+"/"+(int)al1.get(1)+")"); strr1=h1; } } } System.out.print("="); ss=in.nextDouble(); if(fra.judge(strr1,ss)==1) { sum++; } System.out.println("正确"+sum+"道题."); } else if(m==4)//产生的操作数等于4个 { double sumss=0; int r=0; double list[]=new double[2];//存放和 for(r=0;r<2;r++) { list[r]=0; } System.out.print("("); if((int)al2.get(0)>(int)al2.get(1))//比较运算符优先级 { if((int)al2.get(0)==1)//第一个出现减法 { if(((int)al1.get(0)-(int)al1.get(1))>=0) { System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"+"+(int)al1.get(2)); list[0]=(int)al1.get(0)-(int)al1.get(1)+(int)al1.get(2); } else { System.out.print((int)al1.get(1)+"-"+(int)al1.get(0)+"+"+(int)al1.get(2)); list[0]=(int)al1.get(1)-(int)al1.get(0)+(int)al1.get(2); } } else if((int)al2.get(0)==2)//第一个出现乘法 { if((int)al2.get(1)==0) { System.out.print((int)al1.get(0)+"*"+"("+(int)al1.get(1)+"+"+(int)al1.get(2)+")"); list[0]=(int)al1.get(0)*+((int)al1.get(1)+(int)al1.get(2)); } else if((int)al2.get(1)==1) { if(((int)al1.get(1)-(int)al1.get(2))>=0) { System.out.print((int)al1.get(0)+"*"+"("+(int)al1.get(1)+"-"+(int)al1.get(2)+")"); list[0]=(int)al1.get(0)*((int)al1.get(1)-(int)al1.get(2)); } else { System.out.print((int)al1.get(0)+"*"+"("+(int)al1.get(2)+"-"+(int)al1.get(1)+")"); list[0]=(int)al1.get(0)*((int)al1.get(2)-(int)al1.get(1)); } } } else if((int)al2.get(0)==3)//第一个出现除法 { if((int)al2.get(1)==0) { h2=h1*((int)al1.get(1)+(int)al1.get(2)); System.out.print(h2+"/"+"("+(int)al1.get(1)+"+"+(int)al1.get(2)+")"); list[0]=h1; } else if((int)al2.get(1)==1) { if((int)al1.get(1)==(int)al1.get(2)) { h2=h1*(((int)al1.get(1)+1)-(int)al1.get(2)); System.out.print(h2+"/"+"("+((int)al1.get(1)+1)+"-"+(int)al1.get(2)+")"); list[0]=h1; } else { if(((int)al1.get(1)-(int)al1.get(2))>0) { h2=h1*((int)al1.get(1)-(int)al1.get(2)); System.out.print(h2+"/"+"("+(int)al1.get(1)+"-"+(int)al1.get(2)+")"); list[0]=h1; } else { h2=h1*((int)al1.get(2)-(int)al1.get(1)); System.out.print(h2+"/"+"("+(int)al1.get(2)+"-"+(int)al1.get(1)+")"); list[0]=h1; } } } if((int)al2.get(1)==2) { h2=h1*(int)al1.get(1); System.out.print(h2+"/"+(int)al1.get(1)+"*"+(int)al1.get(2)); list[0]=h1*(int)al1.get(2); } } } else if((int)al2.get(0)<(int)al2.get(1)||(int)al2.get(0)==(int)al2.get(1)) { if((int)al2.get(0)==0) { if((int)al2.get(1)==0)//第一个出现加法 { System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"+"+(int)al1.get(2)); list[0]=(int)al1.get(0)+(int)al1.get(1)+(int)al1.get(2); } else if((int)al2.get(1)==1) { if((int)al1.get(1)-(int)al1.get(2)>=0) { System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"-"+(int)al1.get(2)); list[0]=(int)al1.get(0)+(int)al1.get(1)-(int)al1.get(2); } else { System.out.print((int)al1.get(0)+"+"+(int)al1.get(2)+"-"+(int)al1.get(1)); list[0]=(int)al1.get(0)+(int)al1.get(2)-(int)al1.get(1); } } else if((int)al2.get(1)==2) { System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"*"+(int)al1.get(2)); list[0]=(int)al1.get(0)+(int)al1.get(1)*(int)al1.get(2); } else if((int)al2.get(1)==3) { if((int)al1.get(1)>(int)al1.get(2)) { h2=h1*(int)al1.get(2); System.out.print((int)al1.get(0)+"+"+h2+"/"+(int)al1.get(2)); list[0]=(int)al1.get(0)+h1; } else { h2=h1*(int)al1.get(1); System.out.print((int)al1.get(0)+"+"+h2+"/"+(int)al1.get(1)); list[0]=(int)al1.get(0)+h1; } } } else if((int)al2.get(0)==1)//第一个出现减法 { if((int)al2.get(1)==1) { if(((int)al1.get(0)-(int)al1.get(1))>=0) { if(((int)al1.get(0)-(int)al1.get(1)-(int)al1.get(2))>=0) { System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"-"+(int)al1.get(2)); list[0]=(int)al1.get(0)-(int)al1.get(1)-(int)al1.get(2); } else { System.out.print((int)al1.get(2)+"-"+(int)al1.get(0)+"+"+(int)al1.get(1)); list[0]=(int)al1.get(2)-(int)al1.get(0)-(int)al1.get(1); } } else { if(((int)al1.get(1)-(int)al1.get(0)-(int)al1.get(2))>=0) { System.out.print((int)al1.get(1)+"-"+(int)al1.get(0)+"-"+(int)al1.get(2)); list[0]=(int)al1.get(1)-(int)al1.get(0)-(int)al1.get(2); } else { System.out.print((int)al1.get(2)+"-"+(int)al1.get(1)+"+"+(int)al1.get(0)); list[0]=(int)al1.get(2)-(int)al1.get(1)-(int)al1.get(0); } } } else if((int)al2.get(1)==2) { if(((int)al1.get(0)-(int)al1.get(1)*(int)al1.get(2))>=0) { System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"*"+(int)al1.get(2)); list[0]=(int)al1.get(0)-(int)al1.get(1)*(int)al1.get(2); } else { System.out.print((int)al1.get(1)+"*"+(int)al1.get(2)+"-"+(int)al1.get(0)); list[0]=(int)al1.get(1)*(int)al1.get(2)-(int)al1.get(0); } } else if((int)al2.get(1)==3) { if((int)al1.get(1)>(int)al1.get(2)) { if(((int)al1.get(0)-(int)al1.get(1)/(int)al1.get(2))>=0) { h2=h1*(int)al1.get(2); System.out.print((int)al1.get(0)+"-"+h2+"/"+(int)al1.get(2)); list[0]=(int)al1.get(0)-h1; } else { h2=h1*(int)al1.get(2); System.out.print(h2+"/"+(int)al1.get(2)+"-"+(int)al1.get(0)); list[0]=h1-(int)al1.get(0); } } else { if(((int)al1.get(0)-(int)al1.get(2)/(int)al1.get(1))>=0) { h2=h1*(int)al1.get(1); System.out.print((int)al1.get(0)+"-"+h2+"/"+(int)al1.get(1)); list[0]=(int)al1.get(0)-h1; } else { h2=h1*(int)al1.get(1); System.out.print(h2+"/"+(int)al1.get(1)+"-"+(int)al1.get(0)); list[0]=h1-(int)al1.get(0); } } } } else if((int)al2.get(0)==2)//第一个出现乘法 { if((int)al2.get(1)==2) { System.out.print((int)al1.get(0)+"*"+(int)al1.get(1)+"*"+(int)al1.get(2)); list[0]=(int)al1.get(0)*(int)al1.get(1)*(int)al1.get(2); } else if((int)al2.get(1)==3) { if((int)al1.get(1)>(int)al1.get(2)) { h2=h1*(int)al1.get(2); System.out.print((int)al1.get(0)+"*"+h2+"/"+(int)al1.get(2)); list[0]=(int)al1.get(0)*h1; } else { h2=h1*(int)al1.get(1); System.out.print((int)al1.get(0)+"*"+h2+"/"+(int)al1.get(1)); list[0]=(int)al1.get(0)*h1; } } } else if((int)al2.get(0)==3)//第一个出现除法 { if((int)al1.get(1)>(int)al1.get(2)) { h2=h1*(int)al1.get(2); int hh2=0; hh2=h1*((int)al1.get(1)/(int)al1.get(2)); System.out.print(hh2+"/"+"("+h2+"/"+(int)al1.get(2)+")"); list[0]=h1; } else { h2=h1*(int)al1.get(1); int hh2=0; hh2=h1*((int)al1.get(2)/(int)al1.get(1)); System.out.print(hh2+"/"+"("+h2+"/"+(int)al1.get(1)+")"); list[0]=h1; } } } System.out.print(")"); list[1]=(int)al1.get(3); if((int)al2.get(2)==0) { System.out.print("+"+(int)al1.get(3)); sumss=list[0]+(int)al1.get(3); } else if((int)al2.get(2)==1) { if(list[0]-list[1]>=0) { System.out.print("-"+(int)al1.get(3)); sumss=list[0]-(int)al1.get(3); } else if(list[0]<list[1]) { System.out.print("+"+(int)al1.get(3)); sumss=(int)al1.get(3)+list[0]; } } else if((int)al2.get(2)==2) { System.out.print("*"+(int)al1.get(3)); sumss=list[0]*(int)al1.get(3); } else if((int)al2.get(2)==3) { System.out.print("*"+(int)al1.get(3)); sumss=list[0]*(int)al1.get(3); } System.out.print("="); strr1=in.nextDouble(); if(fra.judge(sumss,strr1)==1) { sum++; } System.out.println(sumss); System.out.println("正确"+sum+"道题."); } } } else if(str.equals("N"))//不需要产生括号 { System.out.println("请输入数值范围:"); N2=in.nextInt(); System.out.println("请选择是否有无乘除法的运算题(Y/N):"); str1=in.next(); if(str1.equals("Y"))// 有乘除法 { System.out.println("请选择是否有无余数的运算题(Y/N):"); str2=in.next(); if(str2.equals("Y"))//需要有余数 { for(i=0;i<N;i++) { int a,b,c,c1,h; a=(int) (Math.random()*N2); b=(int) (Math.random()*N2); h=(int) (Math.random()*4); //控制加减运算符 c=(int) (Math.random()*(N2-1)+1); c1=(int) (Math.random()*10+1); //控制倍数 if(h==0) { System.out.println(a+"+"+b+"="); double s; s=a+b; strr2=in.nextDouble(); if(fra.judge(s,strr2)==1) { sum++; } } if(h==1) { double s; if(a-b>=0) { System.out.println(a+"-"+b+"="); s=a-b; } else { System.out.println(b+"-"+a+"="); s=b-a; } strr2=in.nextDouble(); if(fra.judge(s,strr2)==1) { sum++; } } if(h==2) { System.out.println(a+"*"+b+"="); double s; s=a*b; strr2=in.nextDouble(); if(fra.judge(s,strr2)==1) { sum++; } } if(h==3) { int d,k,dd,cc; int j1; k=(int) (Math.random()*(c-1)+1); //必须产生余数 d=c*c1+k; System.out.println(d+"/"+c+"="); String s = null; String result; if(c!=1) s=d+"/"+c; if(c==1) s=String.valueOf(d); result=in.next(); if(fra.judge_FRA(s,result)==1) { sum++; } } } System.out.println("正确"+sum+"道题"); } else if(str2.equals("N"))//不需要产生余数 { for(i=0;i<N;i++) { int a,b,c,c1,h; a=(int) (Math.random()*N2); b=(int) (Math.random()*N2); h=(int) (Math.random()*4); //控制加减运算符 c=(int) (Math.random()*(N2-1)+1); c1=(int) (Math.random()*10+1); //控制倍数 if(h==0) { System.out.println(a+"+"+b+"="); double s; s=a+b; strr2=in.nextDouble(); if(fra.judge(s,strr2)==1) { sum++; } } if(h==1) { System.out.println(a+"-"+b+"="); double s; s=a-b; strr2=in.nextDouble(); if(fra.judge(s,strr2)==1) { sum++; } } if(h==2)//乘法 { System.out.println(a+"*"+b+"="); double s; s=a*b; strr2=in.nextDouble(); if(fra.judge(s,strr2)==1) { sum++; } } if(h==3)//除法,不产生余数 { int d; //不能产生余数 d=c*c1; System.out.println(d+"/"+c+"="); double s; s=d/c; strr2=in.nextDouble(); if(fra.judge(s,strr2)==1) { sum++; } } } System.out.println("正确"+sum+"道题"); } } else if(str1.equals("N"))//没有乘除法 { int a,b,h; for(i=0;i<N;i++) { a=(int) (Math.random()*N2); b=(int) (Math.random()*N2); h=(int) (Math.random()*2); //控制运算符 if(h==0) { System.out.println(a+"+"+b+"="); double s; s=a+b; strr2=in.nextDouble(); if(fra.judge(s,strr2)==1) { sum++; } } if(h==1) { System.out.println(a+"-"+b+"="); double s; s=a-b; strr2=in.nextDouble(); if(fra.judge(s,strr2)==1) { sum++; } } } System.out.println("正确"+sum+"道题"); } } } in.close(); } } class change{ Scanner in=new Scanner(System.in); int change_(int a,int b)//化简分数 { int r1; if(a>b) { r1=b; } else r1=a; int k=0; for(int j=1;j<=r1;j++) { if(a%j==0&&b%j==0) { k=j; } } return k; } int judge_FRA(String str1,String str)//分数运算判断对错,计算正确次数 { int ju; if(str.equals(str1)) { System.out.println("正确"); ju=1; } else { System.out.println("错误"); ju=0; } return ju; } int judge(double s,double ss)//整数判断对错,计算正确次数 { int ju; if(s==ss) { System.out.println("正确"); ju=1; } else { System.out.println("错误"); ju=0; } return ju; } }
结果截图:
编程总结:
我们已经写好了java程序,功能也基本实现,但是在程序嵌入到网页过程中,我们遇到了很多困难,由于我们的程序并没有分模块去写,所以在调用时出现了很多困难,正确结果及用户输入的结果也没有保存在数组里面,所以在网页中不能传递数组值进行判断;后我们查阅了资料,借鉴阅读了一些已完成的程序,但是我们的程序并没有修改正确,嵌入不正确,没有完成后面的功能。
周活动总结表
姓名:杨茵 日期 2016/4/8
|
听课 |
编写代码 |
阅读课本 |
准备考试 |
总结程序 |
|
日总计 |
周日 |
|
|
|
|
|
|
|
周一 |
|
|
|
|
|
|
|
周二 |
100 |
103 |
|
|
|
|
203 |
周三 |
|
140 |
|
|
|
|
140 |
周四 |
|
203 |
|
|
|
|
203 |
周五 |
|
338 |
|
|
|
|
338 |
周六 |
|
|
120 |
|
82 |
|
202 |
周总计 |
100 |
784 |
120 |
|
82 |
|
1086 |
时间记录日志
学生:杨茵 日期:2016/4/8
教师:王建民 课程:软件工程
日期 |
开始时间 |
结束时间 |
中断时间 |
净时间 |
活动 |
备注 |
C |
U |
4/3 |
|
|
|
|
|
|
|
|
4/4 |
|
|
|
|
|
|
|
|
4/5 |
14:00 |
15:50 |
10 |
100 |
听课 |
|
|
|
4/5 |
16:14 |
17:57 |
10 |
103 |
编程序 课堂测试 |
|
|
|
4/6 |
15:00 |
17:30 |
10 |
140 |
编程序 网页 |
|
|
|
4/7 |
18:10 |
21:43 |
10 |
203 |
结对编程序 |
休息 |
|
|
4/8 |
16:30 |
18:00 |
10 |
80 |
结对编程序 |
休息 |
|
|
4/8 |
19:11 |
23:40 |
11 |
258 |
结对编程序 |
聊天 |
|
|
4/9 |
14:17 |
17:52 |
13 |
202 |
总结程序,写博文,读《构建之法》 |
|
|