设计思想:
写好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 |
总结程序,阅读《构建之法》 |
|
|