小学四则运算网页版

设计思想:

      写好java程序后,需要将程序嵌入网页中,编写jsp脚本文件,使用数组来实现java和jsp的交互;session标签,可以实现网页之间参数的传递。

源程序代码(java)

  1 import java.util.Scanner;
  2 import java.util.ArrayList;
  3 public class random_03{
  4     public static void main(String[] args){
  5         int N,i,N1,N2;
  6         int sum=0;
  7         String str;
  8         String hh;    
  9         Scanner in=new Scanner(System.in);    
 10         change fra=new change();
 11         System.out.println("请输入需要打印的运算题的数目:");
 12         N=in.nextInt();
 13         System.out.println("请选择是否需要分数运算(Y/N):");
 14         hh=in.next();
 15         if(hh.equals("Y"))//分数运算
 16         {
 17             for(i=0;i<N;i++)
 18             {            
 19                 int a,b,c,d;
 20                 int s1,s2;
 21                 a=(int) (Math.random()*100);
 22                 b=(int) (Math.random()*99+1);
 23                 //分母不等于0
 24                 c=(int) (Math.random()*100);
 25                 d=(int) (Math.random()*99+1);
 26                 int h=(int)(Math.random()*4);
 27                 int aa=0,bb=0,cc=0,dd=0;
 28                 //为了产生分数,分子也不可为零
 29                 if(a==0)
 30                     a=(int) (Math.random()*99+1);
 31                 if(c==0)
 32                     c=(int) (Math.random()*99+1);
 33                 //化简分数
 34                 int j;
 35                 j=fra.change_(a,b);
 36                 aa=a/j;
 37                 bb=b/j;
 38                 //化简分数
 39                 int p;
 40                 p=fra.change_(c,d);
 41                 cc=c/p;
 42                 dd=d/p;
 43                 int j1;
 44                 int s11,s22;
 45                 String str1;
 46                 if(h==0)
 47                 {   
 48                     //化简后,分母等于1时,直接输出分子
 49                     if(bb!=1&&dd!=1)
 50                         System.out.println(aa+"/"+bb+" + "+cc+"/"+dd+"=");
 51                         
 52                     else if(bb==1&&dd!=1)
 53                         System.out.println(aa+" + "+cc+"/"+dd+"=");
 54                     
 55                     else if(bb!=1&&dd==1)
 56                         System.out.println(aa+"/"+bb+" + "+cc+"=");
 57                         
 58                     else
 59                         System.out.println(aa+"+"+cc+"=");
 60                     //分数加法计算
 61                       s1=aa*dd+bb*cc;
 62                       s2=bb*dd;
 63                       j1=fra.change_(s1,s2);
 64                       s11=s1/j1;
 65                       s22=s2/j1;
 66                       str1=s11+"/"+s22;
 67                       str=in.next();
 68                       if(fra.judge_FRA(str1,str)==1)
 69                       {
 70                          sum++;
 71                       }
 72                       System.out.println("正确"+sum+"道题.");            
 73                 }
 74                 else if(h==1)
 75                 {
 76                     //不能产生负数
 77                     int t1,t2;
 78                     if((a/b-c/d)<0)
 79                     {
 80                         t1=aa;
 81                         aa=cc;
 82                         cc=t1;
 83                         t2=bb;
 84                         bb=dd;
 85                         dd=t2;
 86                     }
 87                     
 88                     //化简后,分母等于1时,直接输出分子    
 89                     if(bb!=1&&dd!=1)
 90                         System.out.println(aa+"/"+bb+" - "+cc+"/"+dd+"=");                        
 91                     else if(bb==1&&dd!=1)
 92                         System.out.println(aa+" - "+cc+"/"+dd+"=");
 93                     else if(bb!=1&&dd==1)
 94                         System.out.println(aa+"/"+bb+" - "+cc+"=");
 95                     else
 96                         System.out.println(aa+"-"+cc+"=");
 97                     //分数减法计算
 98                     s1=aa*dd-bb*cc;
 99                     s2=bb*dd;
100                     j1=fra.change_(s1,s2);
101                     s11=s1/j1;
102                     s22=s2/j1;
103                     str1=s11+"/"+s22;
104                     str=in.next();
105                     if(fra.judge_FRA(str1,str)==1)
106                     {
107                         sum++;
108                     }
109                     System.out.println("正确"+sum+"道题.");
110                 }
111                 else if(h==2)
112                 {
113                     
114                     //化简后,分母等于1时,直接输出分子
115                     if(bb!=1&&dd!=1)
116                         System.out.println(aa+"/"+bb+" * "+cc+"/"+dd+"=");
117 
118                     else if(bb==1&&dd!=1)
119                         System.out.println(aa+" * "+cc+"/"+dd+"=");
120              
121                     else if(bb!=1&&dd==1)
122                         System.out.println(aa+"/"+bb+" * "+cc+"=");
123                         
124                     else
125                         System.out.println(aa+"*"+cc+"=");
126                     //分数乘法计算
127                     s1=aa*cc;
128                     s2=bb*dd;
129                     j1=fra.change_(s1,s2);
130                     s11=s1/j1;
131                     s22=s2/j1;
132                     str1=s11+"/"+s22;
133                     str=in.next();
134                     if(fra.judge_FRA(str1,str)==1)
135                     {
136                         sum++;
137                     }
138                     System.out.println("正确"+sum+"道题.");
139                 }
140                 else
141                 { 
142                     //化简后,分母等于1时,直接输出分子
143                     if(bb!=1&&dd!=1)
144                         System.out.println("("+aa+"/"+bb+")"+" / "+"("+cc+"/"+dd+")"+"=");
145                      
146                     else if(bb==1&&dd!=1)
147                         System.out.println(aa+" / "+"("+cc+"/"+dd+")"+"=");
148                         
149                     else if(bb!=1&&dd==1)
150                         System.out.println("("+aa+"/"+bb+")"+" / "+cc+"=");
151                         
152                     else
153                         System.out.println(aa+"/"+cc+"=");
154                     //分数除法计算
155                     s1=aa*dd;
156                     s2=bb*cc;
157                     j1=fra.change_(s1,s2);
158                     s11=s1/j1;
159                     s22=s2/j1;
160                     str1=s11+"/"+s22;
161                     str=in.next();
162                     if(fra.judge_FRA(str1,str)==1)
163                     {
164                         sum++;
165                     }
166                     System.out.println("正确"+sum+"道题.");
167                 }
168             }
169         }
170         else if(hh.equals("N"))//整数运算
171         {
172             System.out.println("请选择是否需要产生括号的运算题(Y/N):");
173             String str1,str2;
174             double strr2;
175             str=in.next();
176             double strr1=0;
177             double ss;
178             if(str.equals("Y"))
179             {
180                 System.out.println("请输入数值范围:");
181                 N1=in.nextInt();
182                 for(i=0;i<N;i++)
183                 {
184                     ArrayList<Integer> al1=new ArrayList<Integer>();
185                     //申请动态数组存放操作数
186                     ArrayList<Integer> al2=new ArrayList<Integer>();
187                     //申请动态数组存放运算符
188                     int m,n,a,b;
189                     int j,k;
190                     int h1;
191                     h1=(int) (Math.random()*5+1);
192                     int h2=0;
193                     m=(int) (Math.random()*2+3);
194                     //限制操作数个数
195                     n=m-1;
196                     //运算符个数
197                     for(j=0;j<m;j++)
198                     {
199                         a=(int) (Math.random()*(N1-1)+1);
200                         al1.add(a);
201                     }//将操作数压入al1数组
202                     
203                     for(k=0;k<n;k++)
204                     {
205                         b=(int) (Math.random()*4);
206                         al2.add(b);
207                     }//将运算符压入al2数组
208                     if(m==3)//产生的操作数是3个
209                     {
210                         if((int)al2.get(0)>(int)al2.get(1))//比较优先级
211                         {
212                             if((int)al2.get(0)==1)
213                             {
214                                 System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"+"+(int)al1.get(2));
215                                 strr1=(int)al1.get(0)-(int)al1.get(1)+(int)al1.get(2);
216                             }                            
217                             else if((int)al2.get(0)==2)
218                             {
219                                 if((int)al2.get(1)==0)
220                                 {
221                                     System.out.print((int)al1.get(0)+"*"+"("+(int)al1.get(1)+"+"+(int)al1.get(2)+")");
222                                     strr1=(int)al1.get(0)*((int)al1.get(1)+(int)al1.get(2));
223                                 }
224                                 else if((int)al2.get(1)==1)
225                                 {
226                                     System.out.print((int)al1.get(0)+"*"+"("+(int)al1.get(1)+"-"+(int)al1.get(2)+")");
227                                     strr1=(int)al1.get(0)*((int)al1.get(1)-(int)al1.get(2));
228                                 }
229                             }
230                             else if((int)al2.get(0)==3)
231                             {
232                                 if((int)al2.get(1)==0)
233                                 {
234                                     h2=h1*((int)al1.get(1)+(int)al1.get(2));
235                                     System.out.print(h2+"/"+"("+(int)al1.get(1)+"+"+(int)al1.get(2)+")");
236                                     strr1=h1;
237                                 }
238                                 else if((int)al2.get(1)==1)
239                                 {
240                                     if((int)al1.get(1)>(int)al1.get(2))
241                                     {
242                                         h2=h1*((int)al1.get(1)-(int)al1.get(2));
243                                         System.out.print((h2+"/"+"("+(int)al1.get(1)+"-"+(int)al1.get(2)+")"));
244                                         strr1=h1;
245                                     }
246                                     else
247                                     {
248                                         h2=h1*((int)al1.get(2)-(int)al1.get(1));
249                                         System.out.print((h2+"/"+"("+(int)al1.get(1)+"-"+(int)al1.get(2)+")"));
250                                         strr1=h1;
251                                     }
252                                 }
253                                 if((int)al2.get(1)==2)
254                                 {
255                                     h2=h1*(int)al1.get(1);
256                                     System.out.print((h2+"/"+(int)al1.get(1)+"*"+(int)al1.get(2)));
257                                     strr1=h1*(int)al1.get(2);
258                                 }
259                             }
260                         }
261                         else if((int)al2.get(0)<(int)al2.get(1)||(int)al2.get(0)==(int)al2.get(1))//比较优先级
262                         {
263                             if((int)al2.get(0)==0)
264                             {
265                                 if((int)al2.get(1)==0)
266                                 {
267                                     System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"+"+(int)al1.get(2));
268                                     strr1=(int)al1.get(0)+(int)al1.get(1)+(int)al1.get(2);
269                                 }
270                                 else if((int)al2.get(1)==1)
271                                 {
272                                     System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"-"+(int)al1.get(2));
273                                     strr1=(int)al1.get(0)+(int)al1.get(1)-(int)al1.get(2);
274                                 }
275                                 else if((int)al2.get(1)==2)
276                                 {
277                                     System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"*"+(int)al1.get(2));
278                                     strr1=(int)al1.get(0)+(int)al1.get(1)*(int)al1.get(2);
279                                 }
280                                 else if((int)al2.get(1)==3)
281                                 {
282                                     if((int)al1.get(1)>=(int)al1.get(2))
283                                     {
284                                         h2=h1*(int)al1.get(2);
285                                         System.out.print((int)al1.get(0)+"+"+h2+"/"+(int)al1.get(2));
286                                         strr1=(int)al1.get(0)+h1;
287                                     }
288                                     else
289                                     {
290                                         h2=h1*(int)al1.get(1);
291                                         System.out.print((int)al1.get(0)+"+"+h2+"/"+(int)al1.get(1));
292                                         strr1=(int)al1.get(0)+h1;
293                                     }
294                                 }
295                             }
296                             else if((int)al2.get(0)==1)
297                             {
298                                 if((int)al2.get(1)==1)
299                                 {
300                                     System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"-"+(int)al1.get(2));
301                                     strr1=(int)al1.get(0)-(int)al1.get(1)-(int)al1.get(2);
302                                 }
303                                 else if((int)al2.get(1)==2)
304                                 {
305                                     System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"*"+(int)al1.get(2));
306                                     strr1=(int)al1.get(0)-(int)al1.get(1)*(int)al1.get(2);
307                                 }
308                                 else if((int)al2.get(1)==3)
309                                 {
310                                     if((int)al1.get(1)>=(int)al1.get(2))
311                                     {
312                                         h2=h1*(int)al1.get(2);
313                                         System.out.print((int)al1.get(0)+"-"+h2+"/"+(int)al1.get(2));
314                                         strr1=(int)al1.get(0)-h1;
315                                     }
316                                     else
317                                     {
318                                         h2=h1*(int)al1.get(1);
319                                         System.out.print((int)al1.get(0)+"-"+h2+"/"+(int)al1.get(1));
320                                         strr1=(int)al1.get(0)-h1;
321                                     }
322                                 }
323                             }
324                             else if((int)al2.get(0)==2)
325                             {
326                                 if((int)al2.get(1)==2)
327                                 {
328                                     System.out.print((int)al1.get(0)+"*"+(int)al1.get(1)+"*"+(int)al1.get(2));
329                                     strr1=(int)al1.get(0)*(int)al1.get(1)*(int)al1.get(2);
330                                 }
331                                 else if((int)al2.get(1)==3)
332                                 {
333                                     h2=h1*(int)al1.get(2);
334                                     System.out.print((int)al1.get(0)+"*"+h2+"/"+(int)al1.get(2));
335                                     strr1=(int)al1.get(0)*h2/(int)al1.get(2);
336                                 }
337                             }
338                             else if((int)al2.get(0)==3)
339                             {
340                                 if((int)al1.get(1)>=(int)al1.get(2))
341                                 {
342                                     h2=h1*(int)al1.get(2);
343                                     int h22=0;
344                                     h22=h1*(h2/(int)al1.get(2));
345                                     System.out.print(h22+"/"+"("+(h2+"/"+(int)al1.get(2)+")"));
346                                     strr1=h1;
347                                 }
348                                 else
349                                 {
350                                     h2=h1*(int)al1.get(1);
351                                     int h22=0;
352                                     h22=h1*(h2/(int)al1.get(1));
353                                     System.out.print(h22+"/"+"("+h2+"/"+(int)al1.get(1)+")");
354                                     strr1=h1;
355                                 }
356                             }
357                         }
358                         System.out.print("=");
359                         ss=in.nextDouble();
360                         if(fra.judge(strr1,ss)==1)
361                         {
362                             sum++;
363                         }
364                         System.out.println("正确"+sum+"道题.");
365                     }
366                     else if(m==4)//产生的操作数等于4个
367                     {
368                         double sumss=0;
369                         int r=0;
370                         double list[]=new double[2];//存放和
371                         for(r=0;r<2;r++)
372                         {
373                             list[r]=0;
374                         }
375                         System.out.print("(");
376                         if((int)al2.get(0)>(int)al2.get(1))//比较运算符优先级
377                         {
378                             if((int)al2.get(0)==1)//第一个出现减法
379                             {
380                                 if(((int)al1.get(0)-(int)al1.get(1))>=0)
381                                 {
382                                     System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"+"+(int)al1.get(2));
383                                     list[0]=(int)al1.get(0)-(int)al1.get(1)+(int)al1.get(2);
384                                 }
385                                 else
386                                 {
387                                     System.out.print((int)al1.get(1)+"-"+(int)al1.get(0)+"+"+(int)al1.get(2));
388                                     list[0]=(int)al1.get(1)-(int)al1.get(0)+(int)al1.get(2);
389                                 }
390                             }
391                             else if((int)al2.get(0)==2)//第一个出现乘法
392                             {
393                                 if((int)al2.get(1)==0)
394                                 {
395                                     System.out.print((int)al1.get(0)+"*"+"("+(int)al1.get(1)+"+"+(int)al1.get(2)+")");
396                                     list[0]=(int)al1.get(0)*+((int)al1.get(1)+(int)al1.get(2));
397                                 }
398                                 else if((int)al2.get(1)==1)
399                                 {
400                                     if(((int)al1.get(1)-(int)al1.get(2))>=0)
401                                     {
402                                        System.out.print((int)al1.get(0)+"*"+"("+(int)al1.get(1)+"-"+(int)al1.get(2)+")");
403                                        list[0]=(int)al1.get(0)*((int)al1.get(1)-(int)al1.get(2));
404                                     }
405                                     else
406                                     {
407                                         System.out.print((int)al1.get(0)+"*"+"("+(int)al1.get(2)+"-"+(int)al1.get(1)+")");
408                                         list[0]=(int)al1.get(0)*((int)al1.get(2)-(int)al1.get(1));
409                                     }
410                                 }
411                             }
412                             else if((int)al2.get(0)==3)//第一个出现除法
413                             {
414                                 if((int)al2.get(1)==0)
415                                 {
416                                     h2=h1*((int)al1.get(1)+(int)al1.get(2));
417                                     System.out.print(h2+"/"+"("+(int)al1.get(1)+"+"+(int)al1.get(2)+")");
418                                     list[0]=h1;
419                                 }
420                                 else if((int)al2.get(1)==1)
421                                 {
422                                     if((int)al1.get(1)==(int)al1.get(2))
423                                     {
424                                         h2=h1*(((int)al1.get(1)+1)-(int)al1.get(2));
425                                         System.out.print(h2+"/"+"("+((int)al1.get(1)+1)+"-"+(int)al1.get(2)+")");
426                                         list[0]=h1;
427                                     }
428                                     else 
429                                     {
430                                         if(((int)al1.get(1)-(int)al1.get(2))>0)
431                                         {
432                                             h2=h1*((int)al1.get(1)-(int)al1.get(2));
433                                             System.out.print(h2+"/"+"("+(int)al1.get(1)+"-"+(int)al1.get(2)+")");
434                                             list[0]=h1;
435                                         }
436                                         else
437                                         {
438                                             h2=h1*((int)al1.get(2)-(int)al1.get(1));
439                                             System.out.print(h2+"/"+"("+(int)al1.get(2)+"-"+(int)al1.get(1)+")");
440                                             list[0]=h1;
441                                         }
442                                     }
443                                 }
444                                 if((int)al2.get(1)==2)
445                                 {
446                                     h2=h1*(int)al1.get(1);
447                                     System.out.print(h2+"/"+(int)al1.get(1)+"*"+(int)al1.get(2));
448                                     list[0]=h1*(int)al1.get(2);
449                                 }
450                             }
451                         }
452                         else if((int)al2.get(0)<(int)al2.get(1)||(int)al2.get(0)==(int)al2.get(1))
453                         {
454                             if((int)al2.get(0)==0)
455                             {
456                                 if((int)al2.get(1)==0)//第一个出现加法
457                                 {
458                                     System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"+"+(int)al1.get(2));
459                                     list[0]=(int)al1.get(0)+(int)al1.get(1)+(int)al1.get(2);
460                                 }
461                                 else if((int)al2.get(1)==1)
462                                 {
463                                     if((int)al1.get(1)-(int)al1.get(2)>=0)
464                                     {
465                                         System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"-"+(int)al1.get(2));
466                                         list[0]=(int)al1.get(0)+(int)al1.get(1)-(int)al1.get(2);
467                                     }
468                                     else
469                                     {
470                                          System.out.print((int)al1.get(0)+"+"+(int)al1.get(2)+"-"+(int)al1.get(1));
471                                          list[0]=(int)al1.get(0)+(int)al1.get(2)-(int)al1.get(1);
472                                     }
473                                 }
474                                 else if((int)al2.get(1)==2)
475                                 {
476                                     System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"*"+(int)al1.get(2));
477                                     list[0]=(int)al1.get(0)+(int)al1.get(1)*(int)al1.get(2);
478                                 }
479                                 else if((int)al2.get(1)==3)
480                                 {
481                                     if((int)al1.get(1)>(int)al1.get(2))
482                                     {
483                                         h2=h1*(int)al1.get(2);
484                                         System.out.print((int)al1.get(0)+"+"+h2+"/"+(int)al1.get(2));
485                                         list[0]=(int)al1.get(0)+h1;
486                                     }
487                                     else
488                                     {
489                                         h2=h1*(int)al1.get(1);
490                                         System.out.print((int)al1.get(0)+"+"+h2+"/"+(int)al1.get(1));
491                                         list[0]=(int)al1.get(0)+h1;
492                                     }
493                                 }
494                             }
495                             else if((int)al2.get(0)==1)//第一个出现减法
496                             {
497                                 if((int)al2.get(1)==1)
498                                 {
499                                     if(((int)al1.get(0)-(int)al1.get(1))>=0)
500                                     {
501                                         if(((int)al1.get(0)-(int)al1.get(1)-(int)al1.get(2))>=0)
502                                         {
503                                             System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"-"+(int)al1.get(2));
504                                             list[0]=(int)al1.get(0)-(int)al1.get(1)-(int)al1.get(2);
505                                         }
506                                         else
507                                         {
508                                             System.out.print((int)al1.get(2)+"-"+(int)al1.get(0)+"+"+(int)al1.get(1));
509                                             list[0]=(int)al1.get(2)-(int)al1.get(0)-(int)al1.get(1);
510                                         }
511                                     }
512                                     else
513                                     {
514                                         if(((int)al1.get(1)-(int)al1.get(0)-(int)al1.get(2))>=0)
515                                         {
516                                             System.out.print((int)al1.get(1)+"-"+(int)al1.get(0)+"-"+(int)al1.get(2));
517                                             list[0]=(int)al1.get(1)-(int)al1.get(0)-(int)al1.get(2);
518                                         }
519                                         else
520                                         {
521                                             System.out.print((int)al1.get(2)+"-"+(int)al1.get(1)+"+"+(int)al1.get(0));
522                                             list[0]=(int)al1.get(2)-(int)al1.get(1)-(int)al1.get(0);
523                                         }
524                                     }
525                                 }
526                                 else if((int)al2.get(1)==2)
527                                 {
528                                     if(((int)al1.get(0)-(int)al1.get(1)*(int)al1.get(2))>=0)
529                                     {
530                                         System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"*"+(int)al1.get(2));
531                                         list[0]=(int)al1.get(0)-(int)al1.get(1)*(int)al1.get(2);
532                                     }
533                                     else
534                                     {
535                                         System.out.print((int)al1.get(1)+"*"+(int)al1.get(2)+"-"+(int)al1.get(0));
536                                         list[0]=(int)al1.get(1)*(int)al1.get(2)-(int)al1.get(0);
537                                     }
538                                 }
539                                 else if((int)al2.get(1)==3)
540                                 {
541                                     if((int)al1.get(1)>(int)al1.get(2))
542                                     {
543                                         if(((int)al1.get(0)-(int)al1.get(1)/(int)al1.get(2))>=0)
544                                         {
545                                             h2=h1*(int)al1.get(2);
546                                             System.out.print((int)al1.get(0)+"-"+h2+"/"+(int)al1.get(2));
547                                             list[0]=(int)al1.get(0)-h1;
548                                         }
549                                         else
550                                         {
551                                             h2=h1*(int)al1.get(2);
552                                             System.out.print(h2+"/"+(int)al1.get(2)+"-"+(int)al1.get(0));
553                                             list[0]=h1-(int)al1.get(0);
554                                         }
555                                     }
556                                     else
557                                     {
558                                         if(((int)al1.get(0)-(int)al1.get(2)/(int)al1.get(1))>=0)
559                                         {
560                                             h2=h1*(int)al1.get(1);
561                                             System.out.print((int)al1.get(0)+"-"+h2+"/"+(int)al1.get(1));
562                                             list[0]=(int)al1.get(0)-h1;
563                                         }
564                                         else
565                                         {
566                                             h2=h1*(int)al1.get(1);
567                                             System.out.print(h2+"/"+(int)al1.get(1)+"-"+(int)al1.get(0));
568                                             list[0]=h1-(int)al1.get(0);
569                                         }
570                                     }
571                                 }
572                             }
573                             else if((int)al2.get(0)==2)//第一个出现乘法
574                             {
575                                 if((int)al2.get(1)==2)
576                                 {
577                                     System.out.print((int)al1.get(0)+"*"+(int)al1.get(1)+"*"+(int)al1.get(2));
578                                     list[0]=(int)al1.get(0)*(int)al1.get(1)*(int)al1.get(2);
579                                 }
580                                 else if((int)al2.get(1)==3)
581                                 {
582                                     if((int)al1.get(1)>(int)al1.get(2))
583                                     {
584                                         h2=h1*(int)al1.get(2);
585                                         System.out.print((int)al1.get(0)+"*"+h2+"/"+(int)al1.get(2));
586                                         list[0]=(int)al1.get(0)*h1;
587                                     }
588                                     else
589                                     {
590                                         h2=h1*(int)al1.get(1);
591                                         System.out.print((int)al1.get(0)+"*"+h2+"/"+(int)al1.get(1));
592                                         list[0]=(int)al1.get(0)*h1;
593                                     }
594                                 }
595                             }
596                             else if((int)al2.get(0)==3)//第一个出现除法
597                             {
598                                 
599                                 if((int)al1.get(1)>(int)al1.get(2))
600                                 {
601                                     h2=h1*(int)al1.get(2);
602                                     int hh2=0;
603                                     hh2=h1*((int)al1.get(1)/(int)al1.get(2));
604                                     System.out.print(hh2+"/"+"("+h2+"/"+(int)al1.get(2)+")");
605                                     list[0]=h1;
606                                 }
607                                 else
608                                 {
609                                     h2=h1*(int)al1.get(1);
610                                     int hh2=0;
611                                     hh2=h1*((int)al1.get(2)/(int)al1.get(1));
612                                     System.out.print(hh2+"/"+"("+h2+"/"+(int)al1.get(1)+")");
613                                     list[0]=h1;
614                                 }
615                             }
616                         }
617                         System.out.print(")");
618                         list[1]=(int)al1.get(3);
619                         if((int)al2.get(2)==0)
620                         {
621                             System.out.print("+"+(int)al1.get(3));
622                             sumss=list[0]+(int)al1.get(3);
623                         }
624                         else if((int)al2.get(2)==1)
625                         {
626                             if(list[0]-list[1]>=0)
627                             {
628                                 System.out.print("-"+(int)al1.get(3));
629                                 sumss=list[0]-(int)al1.get(3);
630                             }
631                             else if(list[0]<list[1])
632                             {
633                                 System.out.print("+"+(int)al1.get(3));
634                                 sumss=(int)al1.get(3)+list[0];
635                             }
636                         }
637                         else if((int)al2.get(2)==2)
638                         {
639                             System.out.print("*"+(int)al1.get(3));
640                             sumss=list[0]*(int)al1.get(3);
641                         }
642                         else if((int)al2.get(2)==3)
643                         {
644                             System.out.print("*"+(int)al1.get(3));
645                             sumss=list[0]*(int)al1.get(3);
646                         }
647                         System.out.print("=");
648                         strr1=in.nextDouble();
649                         if(fra.judge(sumss,strr1)==1)
650                         {
651                             sum++;
652                         }
653                         System.out.println(sumss);
654                         System.out.println("正确"+sum+"道题.");
655                     }
656                 }
657             }
658             else if(str.equals("N"))//不需要产生括号
659             {
660                 System.out.println("请输入数值范围:");
661                 N2=in.nextInt();
662                 System.out.println("请选择是否有无乘除法的运算题(Y/N):");
663                 str1=in.next();
664                 if(str1.equals("Y"))//  有乘除法
665                 {                
666                     System.out.println("请选择是否有无余数的运算题(Y/N):");
667                     str2=in.next();    
668                     
669                     if(str2.equals("Y"))//需要有余数
670                     {
671                         for(i=0;i<N;i++)
672                         {
673                             int a,b,c,c1,h;
674                             a=(int) (Math.random()*N2);
675                             b=(int) (Math.random()*N2);
676                             h=(int) (Math.random()*4);
677                             //控制加减运算符
678                             c=(int) (Math.random()*(N2-1)+1);
679                             c1=(int) (Math.random()*10+1);
680                             //控制倍数
681                             if(h==0)
682                             {
683                                 System.out.println(a+"+"+b+"=");
684                                 double s;
685                                 s=a+b;
686                                 strr2=in.nextDouble();
687                                 if(fra.judge(s,strr2)==1)
688                                 {
689                                     sum++;
690                                 }
691                                 
692                             }
693                             if(h==1)
694                             {
695                                 double s;
696                                 if(a-b>=0)
697                                 {
698                                     System.out.println(a+"-"+b+"=");
699                                     s=a-b;
700                                 }
701                                 else
702                                 {
703                                     System.out.println(b+"-"+a+"=");
704                                     s=b-a;
705                                 }
706                                 strr2=in.nextDouble();
707                                 if(fra.judge(s,strr2)==1)
708                                 {
709                                     sum++;
710                                 }
711                             }
712                             if(h==2)
713                             {
714                                 System.out.println(a+"*"+b+"=");
715                                 double s;
716                                 s=a*b;
717                                 strr2=in.nextDouble();
718                                 if(fra.judge(s,strr2)==1)
719                                 {
720                                     sum++;
721                                 }            
722                             }
723                             if(h==3)
724                             {
725                                 int d,k,dd,cc;    
726                                 int j1;
727                                 k=(int) (Math.random()*(c-1)+1);
728                                 //必须产生余数
729                                 d=c*c1+k;
730                                 System.out.println(d+"/"+c+"=");
731                                 String s = null;
732                                 String result;
733                                 if(c!=1)
734                                 s=d+"/"+c;
735                                 if(c==1)
736                                 s=String.valueOf(d);
737                                 result=in.next();
738                                 if(fra.judge_FRA(s,result)==1)
739                                 {
740                                     sum++;
741                                 }
742                             }
743                         }
744                         System.out.println("正确"+sum+"道题");
745                     }
746                     else if(str2.equals("N"))//不需要产生余数
747                     {
748                         for(i=0;i<N;i++)
749                         {
750                             int a,b,c,c1,h;
751                             a=(int) (Math.random()*N2);
752                             b=(int) (Math.random()*N2);
753                             h=(int) (Math.random()*4);
754                             //控制加减运算符
755                             c=(int) (Math.random()*(N2-1)+1);
756                             c1=(int) (Math.random()*10+1);
757                             //控制倍数        
758                             if(h==0)
759                             {
760                                 System.out.println(a+"+"+b+"=");
761                                 double s;
762                                 s=a+b;
763                                 strr2=in.nextDouble();
764                                 if(fra.judge(s,strr2)==1)
765                                 {
766                                     sum++;
767                                 }
768                             }
769                             if(h==1)
770                             {
771                                 System.out.println(a+"-"+b+"=");
772                                 double s;
773                                 s=a-b;
774                                 strr2=in.nextDouble();
775                                 if(fra.judge(s,strr2)==1)
776                                 {
777                                     sum++;
778                                 }
779                             }
780                             if(h==2)//乘法
781                             {
782                                 System.out.println(a+"*"+b+"=");
783                                 double s;
784                                 s=a*b;
785                                 strr2=in.nextDouble();
786                                 if(fra.judge(s,strr2)==1)
787                                 {
788                                     sum++;
789                                 }
790                             }
791                             if(h==3)//除法,不产生余数
792                             {
793                                 int d;            
794                                 //不能产生余数
795                                 d=c*c1;
796                                 System.out.println(d+"/"+c+"=");
797                                 double s;
798                                 s=d/c;
799                                 strr2=in.nextDouble();
800                                 if(fra.judge(s,strr2)==1)
801                                 {
802                                     sum++;
803                                 }
804                                 
805                             }
806                         }
807                         System.out.println("正确"+sum+"道题");
808                     }
809                 }
810                         
811                 else if(str1.equals("N"))//没有乘除法
812                 {
813                     int a,b,h;                        
814                     for(i=0;i<N;i++)
815                     {
816                         a=(int) (Math.random()*N2);
817                         b=(int) (Math.random()*N2);
818                         h=(int) (Math.random()*2);
819                         //控制运算符
820                         if(h==0)
821                         {
822                             System.out.println(a+"+"+b+"=");
823                             double s;
824                             s=a+b;
825                             strr2=in.nextDouble();
826                             if(fra.judge(s,strr2)==1)
827                             {
828                                 sum++;
829                             }
830                         }
831                         if(h==1)
832                         {
833                             System.out.println(a+"-"+b+"=");
834                             double s;
835                             s=a-b;
836                             strr2=in.nextDouble();
837                             if(fra.judge(s,strr2)==1)
838                             {
839                                 sum++;
840                             }
841                         }
842                     }
843                     System.out.println("正确"+sum+"道题");
844                 }
845             }
846         }
847         in.close();
848     }
849 }
850 class change{
851     Scanner in=new Scanner(System.in);
852     int change_(int a,int b)//化简分数
853     {
854       int r1;
855       if(a>b)
856       {
857           r1=b;
858       }
859       else
860           r1=a;
861       int k=0;
862       for(int j=1;j<=r1;j++)
863         {
864           if(a%j==0&&b%j==0)
865           {
866               k=j;
867            }          
868         }
869         return k;
870     }
871   int  judge_FRA(String str1,String str)//分数运算判断对错,计算正确次数
872   {
873       int ju;
874       if(str.equals(str1))
875       {
876           System.out.println("正确");
877           ju=1;
878       }
879       else
880       {
881           System.out.println("错误");
882           ju=0;
883       }
884       return ju;
885   }
886   int judge(double s,double ss)//整数判断对错,计算正确次数
887   {
888       int ju;
889       if(s==ss)
890       {
891           System.out.println("正确");
892           ju=1;
893       }
894       else
895       {
896           System.out.println("错误");
897           ju=0;
898       }
899       return ju;
900   }
901 }

结果截图:

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

  1 package ttes;
  2 
  3 public class random3{
  4     public static void main(){
  5         int N,i,N1,N2;
  6         int sum=0;
  7         String str;
  8         String hh;    
  9         Scanner in=new Scanner(System.in);    
 10         change fra=new change();
 11         System.out.println("请输入需要打印的运算题的数目:");
 12         N=in.nextInt();
 13         System.out.println("请选择是否需要分数运算(Y/N):");
 14         hh=in.next();
 15         if(hh.equals("Y"))//分数运算
 16         {
 17             for(i=0;i<N;i++)
 18             {            
 19                 int a,b,c,d;
 20                 int s1,s2;
 21                 a=(int) (Math.random()*100);
 22                 b=(int) (Math.random()*99+1);
 23                 //分母不等于0
 24                 c=(int) (Math.random()*100);
 25                 d=(int) (Math.random()*99+1);
 26                 int h=(int)(Math.random()*4);
 27                 int aa=0,bb=0,cc=0,dd=0;
 28                 //为了产生分数,分子也不可为零
 29                 if(a==0)
 30                     a=(int) (Math.random()*99+1);
 31                 if(c==0)
 32                     c=(int) (Math.random()*99+1);
 33                 //化简分数
 34                 int j;
 35                 j=fra.change_(a,b);
 36                 aa=a/j;
 37                 bb=b/j;
 38                 //化简分数
 39                 int p;
 40                 p=fra.change_(c,d);
 41                 cc=c/p;
 42                 dd=d/p;
 43                 int j1;
 44                 int s11,s22;
 45                 String str1;
 46                 if(h==0)
 47                 {   
 48                     //化简后,分母等于1时,直接输出分子
 49                     if(bb!=1&&dd!=1)
 50                         System.out.println(aa+"/"+bb+" + "+cc+"/"+dd+"=");
 51                         
 52                     else if(bb==1&&dd!=1)
 53                         System.out.println(aa+" + "+cc+"/"+dd+"=");
 54                     
 55                     else if(bb!=1&&dd==1)
 56                         System.out.println(aa+"/"+bb+" + "+cc+"=");
 57                         
 58                     else
 59                         System.out.println(aa+"+"+cc+"=");
 60                     //分数加法计算
 61                       s1=aa*dd+bb*cc;
 62                       s2=bb*dd;
 63                       j1=fra.change_(s1,s2);
 64                       s11=s1/j1;
 65                       s22=s2/j1;
 66                       str1=s11+"/"+s22;
 67                       str=in.next();
 68                       if(fra.judge_FRA(str1,str)==1)
 69                       {
 70                          sum++;
 71                       }
 72                       System.out.println("正确"+sum+"道题.");            
 73                 }
 74                 else if(h==1)
 75                 {
 76                     //不能产生负数
 77                     int t1,t2;
 78                     if((a/b-c/d)<0)
 79                     {
 80                         t1=aa;
 81                         aa=cc;
 82                         cc=t1;
 83                         t2=bb;
 84                         bb=dd;
 85                         dd=t2;
 86                     }
 87                     
 88                     //化简后,分母等于1时,直接输出分子    
 89                     if(bb!=1&&dd!=1)
 90                         System.out.println(aa+"/"+bb+" - "+cc+"/"+dd+"=");                        
 91                     else if(bb==1&&dd!=1)
 92                         System.out.println(aa+" - "+cc+"/"+dd+"=");
 93                     else if(bb!=1&&dd==1)
 94                         System.out.println(aa+"/"+bb+" - "+cc+"=");
 95                     else
 96                         System.out.println(aa+"-"+cc+"=");
 97                     //分数减法计算
 98                     s1=aa*dd-bb*cc;
 99                     s2=bb*dd;
100                     j1=fra.change_(s1,s2);
101                     s11=s1/j1;
102                     s22=s2/j1;
103                     str1=s11+"/"+s22;
104                     str=in.next();
105                     if(fra.judge_FRA(str1,str)==1)
106                     {
107                         sum++;
108                     }
109                     System.out.println("正确"+sum+"道题.");
110                 }
111                 else if(h==2)
112                 {
113                     
114                     //化简后,分母等于1时,直接输出分子
115                     if(bb!=1&&dd!=1)
116                         System.out.println(aa+"/"+bb+" * "+cc+"/"+dd+"=");
117 
118                     else if(bb==1&&dd!=1)
119                         System.out.println(aa+" * "+cc+"/"+dd+"=");
120              
121                     else if(bb!=1&&dd==1)
122                         System.out.println(aa+"/"+bb+" * "+cc+"=");
123                         
124                     else
125                         System.out.println(aa+"*"+cc+"=");
126                     //分数乘法计算
127                     s1=aa*cc;
128                     s2=bb*dd;
129                     j1=fra.change_(s1,s2);
130                     s11=s1/j1;
131                     s22=s2/j1;
132                     str1=s11+"/"+s22;
133                     str=in.next();
134                     if(fra.judge_FRA(str1,str)==1)
135                     {
136                         sum++;
137                     }
138                     System.out.println("正确"+sum+"道题.");
139                 }
140                 else
141                 { 
142                     //化简后,分母等于1时,直接输出分子
143                     if(bb!=1&&dd!=1)
144                         System.out.println("("+aa+"/"+bb+")"+" / "+"("+cc+"/"+dd+")"+"=");
145                      
146                     else if(bb==1&&dd!=1)
147                         System.out.println(aa+" / "+"("+cc+"/"+dd+")"+"=");
148                         
149                     else if(bb!=1&&dd==1)
150                         System.out.println("("+aa+"/"+bb+")"+" / "+cc+"=");
151                         
152                     else
153                         System.out.println(aa+"/"+cc+"=");
154                     //分数除法计算
155                     s1=aa*dd;
156                     s2=bb*cc;
157                     j1=fra.change_(s1,s2);
158                     s11=s1/j1;
159                     s22=s2/j1;
160                     str1=s11+"/"+s22;
161                     str=in.next();
162                     if(fra.judge_FRA(str1,str)==1)
163                     {
164                         sum++;
165                     }
166                     System.out.println("正确"+sum+"道题.");
167                 }
168             }
169         }
170         else if(hh.equals("N"))//整数运算
171         {
172             System.out.println("请选择是否需要产生括号的运算题(Y/N):");
173             String str1,str2;
174             double strr2;
175             str=in.next();
176             double strr1=0;
177             double ss;
178             if(str.equals("Y"))
179             {
180                 System.out.println("请输入数值范围:");
181                 N1=in.nextInt();
182                 for(i=0;i<N;i++)
183                 {
184                     ArrayList<Integer> al1=new ArrayList<Integer>();
185                     //申请动态数组存放操作数
186                     ArrayList<Integer> al2=new ArrayList<Integer>();
187                     //申请动态数组存放运算符
188                     int m,n,a,b;
189                     int j,k;
190                     int h1;
191                     h1=(int) (Math.random()*5+1);
192                     int h2=0;
193                     m=(int) (Math.random()*2+3);
194                     //限制操作数个数
195                     n=m-1;
196                     //运算符个数
197                     for(j=0;j<m;j++)
198                     {
199                         a=(int) (Math.random()*(N1-1)+1);
200                         al1.add(a);
201                     }//将操作数压入al1数组
202                     
203                     for(k=0;k<n;k++)
204                     {
205                         b=(int) (Math.random()*4);
206                         al2.add(b);
207                     }//将运算符压入al2数组
208                     if(m==3)//产生的操作数是3个
209                     {
210                         if((int)al2.get(0)>(int)al2.get(1))//比较优先级
211                         {
212                             if((int)al2.get(0)==1)
213                             {
214                                 System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"+"+(int)al1.get(2));
215                                 strr1=(int)al1.get(0)-(int)al1.get(1)+(int)al1.get(2);
216                             }                            
217                             else if((int)al2.get(0)==2)
218                             {
219                                 if((int)al2.get(1)==0)
220                                 {
221                                     System.out.print((int)al1.get(0)+"*"+"("+(int)al1.get(1)+"+"+(int)al1.get(2)+")");
222                                     strr1=(int)al1.get(0)*((int)al1.get(1)+(int)al1.get(2));
223                                 }
224                                 else if((int)al2.get(1)==1)
225                                 {
226                                     System.out.print((int)al1.get(0)+"*"+"("+(int)al1.get(1)+"-"+(int)al1.get(2)+")");
227                                     strr1=(int)al1.get(0)*((int)al1.get(1)-(int)al1.get(2));
228                                 }
229                             }
230                             else if((int)al2.get(0)==3)
231                             {
232                                 if((int)al2.get(1)==0)
233                                 {
234                                     h2=h1*((int)al1.get(1)+(int)al1.get(2));
235                                     System.out.print(h2+"/"+"("+(int)al1.get(1)+"+"+(int)al1.get(2)+")");
236                                     strr1=h1;
237                                 }
238                                 else if((int)al2.get(1)==1)
239                                 {
240                                     if((int)al1.get(1)>(int)al1.get(2))
241                                     {
242                                         h2=h1*((int)al1.get(1)-(int)al1.get(2));
243                                         System.out.print((h2+"/"+"("+(int)al1.get(1)+"-"+(int)al1.get(2)+")"));
244                                         strr1=h1;
245                                     }
246                                     else
247                                     {
248                                         h2=h1*((int)al1.get(2)-(int)al1.get(1));
249                                         System.out.print((h2+"/"+"("+(int)al1.get(1)+"-"+(int)al1.get(2)+")"));
250                                         strr1=h1;
251                                     }
252                                 }
253                                 if((int)al2.get(1)==2)
254                                 {
255                                     h2=h1*(int)al1.get(1);
256                                     System.out.print((h2+"/"+(int)al1.get(1)+"*"+(int)al1.get(2)));
257                                     strr1=h1*(int)al1.get(2);
258                                 }
259                             }
260                         }
261                         else if((int)al2.get(0)<(int)al2.get(1)||(int)al2.get(0)==(int)al2.get(1))//比较优先级
262                         {
263                             if((int)al2.get(0)==0)
264                             {
265                                 if((int)al2.get(1)==0)
266                                 {
267                                     System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"+"+(int)al1.get(2));
268                                     strr1=(int)al1.get(0)+(int)al1.get(1)+(int)al1.get(2);
269                                 }
270                                 else if((int)al2.get(1)==1)
271                                 {
272                                     System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"-"+(int)al1.get(2));
273                                     strr1=(int)al1.get(0)+(int)al1.get(1)-(int)al1.get(2);
274                                 }
275                                 else if((int)al2.get(1)==2)
276                                 {
277                                     System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"*"+(int)al1.get(2));
278                                     strr1=(int)al1.get(0)+(int)al1.get(1)*(int)al1.get(2);
279                                 }
280                                 else if((int)al2.get(1)==3)
281                                 {
282                                     if((int)al1.get(1)>=(int)al1.get(2))
283                                     {
284                                         h2=h1*(int)al1.get(2);
285                                         System.out.print((int)al1.get(0)+"+"+h2+"/"+(int)al1.get(2));
286                                         strr1=(int)al1.get(0)+h1;
287                                     }
288                                     else
289                                     {
290                                         h2=h1*(int)al1.get(1);
291                                         System.out.print((int)al1.get(0)+"+"+h2+"/"+(int)al1.get(1));
292                                         strr1=(int)al1.get(0)+h1;
293                                     }
294                                 }
295                             }
296                             else if((int)al2.get(0)==1)
297                             {
298                                 if((int)al2.get(1)==1)
299                                 {
300                                     System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"-"+(int)al1.get(2));
301                                     strr1=(int)al1.get(0)-(int)al1.get(1)-(int)al1.get(2);
302                                 }
303                                 else if((int)al2.get(1)==2)
304                                 {
305                                     System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"*"+(int)al1.get(2));
306                                     strr1=(int)al1.get(0)-(int)al1.get(1)*(int)al1.get(2);
307                                 }
308                                 else if((int)al2.get(1)==3)
309                                 {
310                                     if((int)al1.get(1)>=(int)al1.get(2))
311                                     {
312                                         h2=h1*(int)al1.get(2);
313                                         System.out.print((int)al1.get(0)+"-"+h2+"/"+(int)al1.get(2));
314                                         strr1=(int)al1.get(0)-h1;
315                                     }
316                                     else
317                                     {
318                                         h2=h1*(int)al1.get(1);
319                                         System.out.print((int)al1.get(0)+"-"+h2+"/"+(int)al1.get(1));
320                                         strr1=(int)al1.get(0)-h1;
321                                     }
322                                 }
323                             }
324                             else if((int)al2.get(0)==2)
325                             {
326                                 if((int)al2.get(1)==2)
327                                 {
328                                     System.out.print((int)al1.get(0)+"*"+(int)al1.get(1)+"*"+(int)al1.get(2));
329                                     strr1=(int)al1.get(0)*(int)al1.get(1)*(int)al1.get(2);
330                                 }
331                                 else if((int)al2.get(1)==3)
332                                 {
333                                     h2=h1*(int)al1.get(2);
334                                     System.out.print((int)al1.get(0)+"*"+h2+"/"+(int)al1.get(2));
335                                     strr1=(int)al1.get(0)*h2/(int)al1.get(2);
336                                 }
337                             }
338                             else if((int)al2.get(0)==3)
339                             {
340                                 if((int)al1.get(1)>=(int)al1.get(2))
341                                 {
342                                     h2=h1*(int)al1.get(2);
343                                     int h22=0;
344                                     h22=h1*(h2/(int)al1.get(2));
345                                     System.out.print(h22+"/"+"("+(h2+"/"+(int)al1.get(2)+")"));
346                                     strr1=h1;
347                                 }
348                                 else
349                                 {
350                                     h2=h1*(int)al1.get(1);
351                                     int h22=0;
352                                     h22=h1*(h2/(int)al1.get(1));
353                                     System.out.print(h22+"/"+"("+h2+"/"+(int)al1.get(1)+")");
354                                     strr1=h1;
355                                 }
356                             }
357                         }
358                         System.out.print("=");
359                         ss=in.nextDouble();
360                         if(fra.judge(strr1,ss)==1)
361                         {
362                             sum++;
363                         }
364                         System.out.println("正确"+sum+"道题.");
365                     }
366                     else if(m==4)//产生的操作数等于4个
367                     {
368                         double sumss=0;
369                         int r=0;
370                         double list[]=new double[2];//存放和
371                         for(r=0;r<2;r++)
372                         {
373                             list[r]=0;
374                         }
375                         System.out.print("(");
376                         if((int)al2.get(0)>(int)al2.get(1))//比较运算符优先级
377                         {
378                             if((int)al2.get(0)==1)//第一个出现减法
379                             {
380                                 if(((int)al1.get(0)-(int)al1.get(1))>=0)
381                                 {
382                                     System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"+"+(int)al1.get(2));
383                                     list[0]=(int)al1.get(0)-(int)al1.get(1)+(int)al1.get(2);
384                                 }
385                                 else
386                                 {
387                                     System.out.print((int)al1.get(1)+"-"+(int)al1.get(0)+"+"+(int)al1.get(2));
388                                     list[0]=(int)al1.get(1)-(int)al1.get(0)+(int)al1.get(2);
389                                 }
390                             }
391                             else if((int)al2.get(0)==2)//第一个出现乘法
392                             {
393                                 if((int)al2.get(1)==0)
394                                 {
395                                     System.out.print((int)al1.get(0)+"*"+"("+(int)al1.get(1)+"+"+(int)al1.get(2)+")");
396                                     list[0]=(int)al1.get(0)*+((int)al1.get(1)+(int)al1.get(2));
397                                 }
398                                 else if((int)al2.get(1)==1)
399                                 {
400                                     if(((int)al1.get(1)-(int)al1.get(2))>=0)
401                                     {
402                                        System.out.print((int)al1.get(0)+"*"+"("+(int)al1.get(1)+"-"+(int)al1.get(2)+")");
403                                        list[0]=(int)al1.get(0)*((int)al1.get(1)-(int)al1.get(2));
404                                     }
405                                     else
406                                     {
407                                         System.out.print((int)al1.get(0)+"*"+"("+(int)al1.get(2)+"-"+(int)al1.get(1)+")");
408                                         list[0]=(int)al1.get(0)*((int)al1.get(2)-(int)al1.get(1));
409                                     }
410                                 }
411                             }
412                             else if((int)al2.get(0)==3)//第一个出现除法
413                             {
414                                 if((int)al2.get(1)==0)
415                                 {
416                                     h2=h1*((int)al1.get(1)+(int)al1.get(2));
417                                     System.out.print(h2+"/"+"("+(int)al1.get(1)+"+"+(int)al1.get(2)+")");
418                                     list[0]=h1;
419                                 }
420                                 else if((int)al2.get(1)==1)
421                                 {
422                                     if((int)al1.get(1)==(int)al1.get(2))
423                                     {
424                                         h2=h1*(((int)al1.get(1)+1)-(int)al1.get(2));
425                                         System.out.print(h2+"/"+"("+((int)al1.get(1)+1)+"-"+(int)al1.get(2)+")");
426                                         list[0]=h1;
427                                     }
428                                     else 
429                                     {
430                                         if(((int)al1.get(1)-(int)al1.get(2))>0)
431                                         {
432                                             h2=h1*((int)al1.get(1)-(int)al1.get(2));
433                                             System.out.print(h2+"/"+"("+(int)al1.get(1)+"-"+(int)al1.get(2)+")");
434                                             list[0]=h1;
435                                         }
436                                         else
437                                         {
438                                             h2=h1*((int)al1.get(2)-(int)al1.get(1));
439                                             System.out.print(h2+"/"+"("+(int)al1.get(2)+"-"+(int)al1.get(1)+")");
440                                             list[0]=h1;
441                                         }
442                                     }
443                                 }
444                                 if((int)al2.get(1)==2)
445                                 {
446                                     h2=h1*(int)al1.get(1);
447                                     System.out.print(h2+"/"+(int)al1.get(1)+"*"+(int)al1.get(2));
448                                     list[0]=h1*(int)al1.get(2);
449                                 }
450                             }
451                         }
452                         else if((int)al2.get(0)<(int)al2.get(1)||(int)al2.get(0)==(int)al2.get(1))
453                         {
454                             if((int)al2.get(0)==0)
455                             {
456                                 if((int)al2.get(1)==0)//第一个出现加法
457                                 {
458                                     System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"+"+(int)al1.get(2));
459                                     list[0]=(int)al1.get(0)+(int)al1.get(1)+(int)al1.get(2);
460                                 }
461                                 else if((int)al2.get(1)==1)
462                                 {
463                                     if((int)al1.get(1)-(int)al1.get(2)>=0)
464                                     {
465                                         System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"-"+(int)al1.get(2));
466                                         list[0]=(int)al1.get(0)+(int)al1.get(1)-(int)al1.get(2);
467                                     }
468                                     else
469                                     {
470                                          System.out.print((int)al1.get(0)+"+"+(int)al1.get(2)+"-"+(int)al1.get(1));
471                                          list[0]=(int)al1.get(0)+(int)al1.get(2)-(int)al1.get(1);
472                                     }
473                                 }
474                                 else if((int)al2.get(1)==2)
475                                 {
476                                     System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"*"+(int)al1.get(2));
477                                     list[0]=(int)al1.get(0)+(int)al1.get(1)*(int)al1.get(2);
478                                 }
479                                 else if((int)al2.get(1)==3)
480                                 {
481                                     if((int)al1.get(1)>(int)al1.get(2))
482                                     {
483                                         h2=h1*(int)al1.get(2);
484                                         System.out.print((int)al1.get(0)+"+"+h2+"/"+(int)al1.get(2));
485                                         list[0]=(int)al1.get(0)+h1;
486                                     }
487                                     else
488                                     {
489                                         h2=h1*(int)al1.get(1);
490                                         System.out.print((int)al1.get(0)+"+"+h2+"/"+(int)al1.get(1));
491                                         list[0]=(int)al1.get(0)+h1;
492                                     }
493                                 }
494                             }
495                             else if((int)al2.get(0)==1)//第一个出现减法
496                             {
497                                 if((int)al2.get(1)==1)
498                                 {
499                                     if(((int)al1.get(0)-(int)al1.get(1))>=0)
500                                     {
501                                         if(((int)al1.get(0)-(int)al1.get(1)-(int)al1.get(2))>=0)
502                                         {
503                                             System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"-"+(int)al1.get(2));
504                                             list[0]=(int)al1.get(0)-(int)al1.get(1)-(int)al1.get(2);
505                                         }
506                                         else
507                                         {
508                                             System.out.print((int)al1.get(2)+"-"+(int)al1.get(0)+"+"+(int)al1.get(1));
509                                             list[0]=(int)al1.get(2)-(int)al1.get(0)-(int)al1.get(1);
510                                         }
511                                     }
512                                     else
513                                     {
514                                         if(((int)al1.get(1)-(int)al1.get(0)-(int)al1.get(2))>=0)
515                                         {
516                                             System.out.print((int)al1.get(1)+"-"+(int)al1.get(0)+"-"+(int)al1.get(2));
517                                             list[0]=(int)al1.get(1)-(int)al1.get(0)-(int)al1.get(2);
518                                         }
519                                         else
520                                         {
521                                             System.out.print((int)al1.get(2)+"-"+(int)al1.get(1)+"+"+(int)al1.get(0));
522                                             list[0]=(int)al1.get(2)-(int)al1.get(1)-(int)al1.get(0);
523                                         }
524                                     }
525                                 }
526                                 else if((int)al2.get(1)==2)
527                                 {
528                                     if(((int)al1.get(0)-(int)al1.get(1)*(int)al1.get(2))>=0)
529                                     {
530                                         System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"*"+(int)al1.get(2));
531                                         list[0]=(int)al1.get(0)-(int)al1.get(1)*(int)al1.get(2);
532                                     }
533                                     else
534                                     {
535                                         System.out.print((int)al1.get(1)+"*"+(int)al1.get(2)+"-"+(int)al1.get(0));
536                                         list[0]=(int)al1.get(1)*(int)al1.get(2)-(int)al1.get(0);
537                                     }
538                                 }
539                                 else if((int)al2.get(1)==3)
540                                 {
541                                     if((int)al1.get(1)>(int)al1.get(2))
542                                     {
543                                         if(((int)al1.get(0)-(int)al1.get(1)/(int)al1.get(2))>=0)
544                                         {
545                                             h2=h1*(int)al1.get(2);
546                                             System.out.print((int)al1.get(0)+"-"+h2+"/"+(int)al1.get(2));
547                                             list[0]=(int)al1.get(0)-h1;
548                                         }
549                                         else
550                                         {
551                                             h2=h1*(int)al1.get(2);
552                                             System.out.print(h2+"/"+(int)al1.get(2)+"-"+(int)al1.get(0));
553                                             list[0]=h1-(int)al1.get(0);
554                                         }
555                                     }
556                                     else
557                                     {
558                                         if(((int)al1.get(0)-(int)al1.get(2)/(int)al1.get(1))>=0)
559                                         {
560                                             h2=h1*(int)al1.get(1);
561                                             System.out.print((int)al1.get(0)+"-"+h2+"/"+(int)al1.get(1));
562                                             list[0]=(int)al1.get(0)-h1;
563                                         }
564                                         else
565                                         {
566                                             h2=h1*(int)al1.get(1);
567                                             System.out.print(h2+"/"+(int)al1.get(1)+"-"+(int)al1.get(0));
568                                             list[0]=h1-(int)al1.get(0);
569                                         }
570                                     }
571                                 }
572                             }
573                             else if((int)al2.get(0)==2)//第一个出现乘法
574                             {
575                                 if((int)al2.get(1)==2)
576                                 {
577                                     System.out.print((int)al1.get(0)+"*"+(int)al1.get(1)+"*"+(int)al1.get(2));
578                                     list[0]=(int)al1.get(0)*(int)al1.get(1)*(int)al1.get(2);
579                                 }
580                                 else if((int)al2.get(1)==3)
581                                 {
582                                     if((int)al1.get(1)>(int)al1.get(2))
583                                     {
584                                         h2=h1*(int)al1.get(2);
585                                         System.out.print((int)al1.get(0)+"*"+h2+"/"+(int)al1.get(2));
586                                         list[0]=(int)al1.get(0)*h1;
587                                     }
588                                     else
589                                     {
590                                         h2=h1*(int)al1.get(1);
591                                         System.out.print((int)al1.get(0)+"*"+h2+"/"+(int)al1.get(1));
592                                         list[0]=(int)al1.get(0)*h1;
593                                     }
594                                 }
595                             }
596                             else if((int)al2.get(0)==3)//第一个出现除法
597                             {
598                                 
599                                 if((int)al1.get(1)>(int)al1.get(2))
600                                 {
601                                     h2=h1*(int)al1.get(2);
602                                     int hh2=0;
603                                     hh2=h1*((int)al1.get(1)/(int)al1.get(2));
604                                     System.out.print(hh2+"/"+"("+h2+"/"+(int)al1.get(2)+")");
605                                     list[0]=h1;
606                                 }
607                                 else
608                                 {
609                                     h2=h1*(int)al1.get(1);
610                                     int hh2=0;
611                                     hh2=h1*((int)al1.get(2)/(int)al1.get(1));
612                                     System.out.print(hh2+"/"+"("+h2+"/"+(int)al1.get(1)+")");
613                                     list[0]=h1;
614                                 }
615                             }
616                         }
617                         System.out.print(")");
618                         list[1]=(int)al1.get(3);
619                         if((int)al2.get(2)==0)
620                         {
621                             System.out.print("+"+(int)al1.get(3));
622                             sumss=list[0]+(int)al1.get(3);
623                         }
624                         else if((int)al2.get(2)==1)
625                         {
626                             if(list[0]-list[1]>=0)
627                             {
628                                 System.out.print("-"+(int)al1.get(3));
629                                 sumss=list[0]-(int)al1.get(3);
630                             }
631                             else if(list[0]<list[1])
632                             {
633                                 System.out.print("+"+(int)al1.get(3));
634                                 sumss=(int)al1.get(3)+list[0];
635                             }
636                         }
637                         else if((int)al2.get(2)==2)
638                         {
639                             System.out.print("*"+(int)al1.get(3));
640                             sumss=list[0]*(int)al1.get(3);
641                         }
642                         else if((int)al2.get(2)==3)
643                         {
644                             System.out.print("*"+(int)al1.get(3));
645                             sumss=list[0]*(int)al1.get(3);
646                         }
647                         System.out.print("=");
648                         strr1=in.nextDouble();
649                         if(fra.judge(sumss,strr1)==1)
650                         {
651                             sum++;
652                         }
653                         System.out.println(sumss);
654                         System.out.println("正确"+sum+"道题.");
655                     }
656                 }
657             }
658             else if(str.equals("N"))//不需要产生括号
659             {
660                 System.out.println("请输入数值范围:");
661                 N2=in.nextInt();
662                 System.out.println("请选择是否有无乘除法的运算题(Y/N):");
663                 str1=in.next();
664                 if(str1.equals("Y"))//  有乘除法
665                 {                
666                     System.out.println("请选择是否有无余数的运算题(Y/N):");
667                     str2=in.next();    
668                     
669                     if(str2.equals("Y"))//需要有余数
670                     {
671                         for(i=0;i<N;i++)
672                         {
673                             int a,b,c,c1,h;
674                             a=(int) (Math.random()*N2);
675                             b=(int) (Math.random()*N2);
676                             h=(int) (Math.random()*4);
677                             //控制加减运算符
678                             c=(int) (Math.random()*(N2-1)+1);
679                             c1=(int) (Math.random()*10+1);
680                             //控制倍数
681                             if(h==0)
682                             {
683                                 System.out.println(a+"+"+b+"=");
684                                 double s;
685                                 s=a+b;
686                                 strr2=in.nextDouble();
687                                 if(fra.judge(s,strr2)==1)
688                                 {
689                                     sum++;
690                                 }
691                                 
692                             }
693                             if(h==1)
694                             {
695                                 double s;
696                                 if(a-b>=0)
697                                 {
698                                     System.out.println(a+"-"+b+"=");
699                                     s=a-b;
700                                 }
701                                 else
702                                 {
703                                     System.out.println(b+"-"+a+"=");
704                                     s=b-a;
705                                 }
706                                 strr2=in.nextDouble();
707                                 if(fra.judge(s,strr2)==1)
708                                 {
709                                     sum++;
710                                 }
711                             }
712                             if(h==2)
713                             {
714                                 System.out.println(a+"*"+b+"=");
715                                 double s;
716                                 s=a*b;
717                                 strr2=in.nextDouble();
718                                 if(fra.judge(s,strr2)==1)
719                                 {
720                                     sum++;
721                                 }            
722                             }
723                             if(h==3)
724                             {
725                                 int d,k,dd,cc;    
726                                 int j1;
727                                 k=(int) (Math.random()*(c-1)+1);
728                                 //必须产生余数
729                                 d=c*c1+k;
730                                 System.out.println(d+"/"+c+"=");
731                                 String s = null;
732                                 String result;
733                                 if(c!=1)
734                                 s=d+"/"+c;
735                                 if(c==1)
736                                 s=String.valueOf(d);
737                                 result=in.next();
738                                 if(fra.judge_FRA(s,result)==1)
739                                 {
740                                     sum++;
741                                 }
742                             }
743                         }
744                         System.out.println("正确"+sum+"道题");
745                     }
746                     else if(str2.equals("N"))//不需要产生余数
747                     {
748                         for(i=0;i<N;i++)
749                         {
750                             int a,b,c,c1,h;
751                             a=(int) (Math.random()*N2);
752                             b=(int) (Math.random()*N2);
753                             h=(int) (Math.random()*4);
754                             //控制加减运算符
755                             c=(int) (Math.random()*(N2-1)+1);
756                             c1=(int) (Math.random()*10+1);
757                             //控制倍数        
758                             if(h==0)
759                             {
760                                 System.out.println(a+"+"+b+"=");
761                                 double s;
762                                 s=a+b;
763                                 strr2=in.nextDouble();
764                                 if(fra.judge(s,strr2)==1)
765                                 {
766                                     sum++;
767                                 }
768                             }
769                             if(h==1)
770                             {
771                                 System.out.println(a+"-"+b+"=");
772                                 double s;
773                                 s=a-b;
774                                 strr2=in.nextDouble();
775                                 if(fra.judge(s,strr2)==1)
776                                 {
777                                     sum++;
778                                 }
779                             }
780                             if(h==2)//乘法
781                             {
782                                 System.out.println(a+"*"+b+"=");
783                                 double s;
784                                 s=a*b;
785                                 strr2=in.nextDouble();
786                                 if(fra.judge(s,strr2)==1)
787                                 {
788                                     sum++;
789                                 }
790                             }
791                             if(h==3)//除法,不产生余数
792                             {
793                                 int d;            
794                                 //不能产生余数
795                                 d=c*c1;
796                                 System.out.println(d+"/"+c+"=");
797                                 double s;
798                                 s=d/c;
799                                 strr2=in.nextDouble();
800                                 if(fra.judge(s,strr2)==1)
801                                 {
802                                     sum++;
803                                 }
804                                 
805                             }
806                         }
807                         System.out.println("正确"+sum+"道题");
808                     }
809                 }
810                         
811                 else if(str1.equals("N"))//没有乘除法
812                 {
813                     int a,b,h;                        
814                     for(i=0;i<N;i++)
815                     {
816                         a=(int) (Math.random()*N2);
817                         b=(int) (Math.random()*N2);
818                         h=(int) (Math.random()*2);
819                         //控制运算符
820                         if(h==0)
821                         {
822                             System.out.println(a+"+"+b+"=");
823                             double s;
824                             s=a+b;
825                             strr2=in.nextDouble();
826                             if(fra.judge(s,strr2)==1)
827                             {
828                                 sum++;
829                             }
830                         }
831                         if(h==1)
832                         {
833                             System.out.println(a+"-"+b+"=");
834                             double s;
835                             s=a-b;
836                             strr2=in.nextDouble();
837                             if(fra.judge(s,strr2)==1)
838                             {
839                                 sum++;
840                             }
841                         }
842                     }
843                     System.out.println("正确"+sum+"道题");
844                 }
845             }
846         }
847         in.close();
848     }
849 }
850 class change{
851     Scanner in=new Scanner(System.in);
852     int change_(int a,int b)//化简分数
853     {
854       int r1;
855       if(a>b)
856       {
857           r1=b;
858       }
859       else
860           r1=a;
861       int k=0;
862       for(int j=1;j<=r1;j++)
863         {
864           if(a%j==0&&b%j==0)
865           {
866               k=j;
867            }          
868         }
869         return k;
870     }
871   int  judge_FRA(String str1,String str)//分数运算判断对错,计算正确次数
872   {
873       int ju;
874       if(str.equals(str1))
875       {
876           System.out.println("正确");
877           ju=1;
878       }
879       else
880       {
881           System.out.println("错误");
882           ju=0;
883       }
884       return ju;
885   }
886   int judge(double s,double ss)//整数判断对错,计算正确次数
887   {
888       int ju;
889       if(s==ss)
890       {
891           System.out.println("正确");
892           ju=1;
893       }
894       else
895       {
896           System.out.println("错误");
897           ju=0;
898       }
899       return ju;
900   }
901 }

结果截图:

 

 

编程总结:

      我们已经写好了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

总结程序,阅读《构建之法》

 

 

 

 

 

posted @ 2016-04-10 08:29  卿语  阅读(483)  评论(0编辑  收藏  举报