小学四则运算3
小组成员 :严羽卿、杨茵
工作照:
设计思路:涉及带括号的运算时,就把三个数作为一组,运算结果存入数组中,最后计算数组的和就可以。如果不带括号,则就是普通的两位数的加减乘除。最后将计算机计算的结果和输入的数进行比较,判断对错’
源代码:
1 import java.util.Scanner; 2 import java.util.ArrayList; 3 public class Test { 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 143 //化简后,分母等于1时,直接输出分子 144 if(bb!=1&&dd!=1) 145 System.out.println("("+aa+"/"+bb+")"+" / "+"("+cc+"/"+dd+")"+"="); 146 147 else if(bb==1&&dd!=1) 148 System.out.println(aa+" / "+"("+cc+"/"+dd+")"+"="); 149 150 else if(bb!=1&&dd==1) 151 System.out.println("("+aa+"/"+bb+")"+" / "+cc+"="); 152 153 else 154 System.out.println(aa+"/"+cc+"="); 155 //分数除法计算 156 s1=aa*dd; 157 s2=bb*cc; 158 j1=fra.change_(s1,s2); 159 s11=s1/j1; 160 s22=s2/j1; 161 str1=s11+"/"+s22; 162 str=in.next(); 163 if(fra.judge_FRA(str1,str)==1) 164 { 165 sum++; 166 } 167 System.out.println("正确"+sum+"道题."); 168 } 169 } 170 } 171 else if(hh.equals("N"))//整数运算 172 { 173 System.out.println("请选择是否需要产生括号的运算题(Y/N):"); 174 String str1,str2,str3; 175 double strr2; 176 str=in.next(); 177 double strr1=0; 178 double ss; 179 if(str.equals("Y")) 180 { 181 System.out.println("请输入数值范围:"); 182 N1=in.nextInt(); 183 for(i=0;i<N;i++) 184 { 185 ArrayList<Integer> al1=new ArrayList<Integer>(); 186 //申请动态数组存放操作数 187 ArrayList<Integer> al2=new ArrayList<Integer>(); 188 //申请动态数组存放运算符 189 int m,n,a,b; 190 int j,k; 191 m=(int) (Math.random()*7+3); 192 //限制操作数个数 193 n=m-1; 194 //运算符个数 195 for(j=0;j<m;j++) 196 { 197 a=(int) (Math.random()*(N1-1)+1); 198 al1.add(a); 199 }//将操作数压入al1数组 200 201 for(k=0;k<n;k++) 202 { 203 b=(int) (Math.random()*4); 204 al2.add(b); 205 }//将运算符压入al2数组 206 if(m==3)//产生的操作数是3个 207 { 208 if((int)al2.get(0)>(int)al2.get(1))//比较优先级 209 { 210 if((int)al2.get(0)==1) 211 { 212 System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"+"+(int)al1.get(2)); 213 strr1=(int)al1.get(0)-(int)al1.get(1)+(int)al1.get(2); 214 } 215 else if((int)al2.get(0)==2) 216 { 217 if((int)al2.get(1)==0) 218 { 219 System.out.print((int)al1.get(0)+"*"+"("+(int)al1.get(1)+"+"+(int)al1.get(2)+")"); 220 strr1=(int)al1.get(0)*((int)al1.get(1)+(int)al1.get(2)); 221 } 222 else if((int)al2.get(1)==1) 223 { 224 System.out.print((int)al1.get(0)+"*"+"("+(int)al1.get(1)+"-"+(int)al1.get(2)+")"); 225 strr1=(int)al1.get(0)*((int)al1.get(1)-(int)al1.get(2)); 226 } 227 } 228 else if((int)al2.get(0)==3) 229 { 230 if((int)al2.get(1)==0) 231 { 232 System.out.print((int)al1.get(0)+"/"+"("+(int)al1.get(1)+"+"+(int)al1.get(2)+")"); 233 strr1=(int)al1.get(0)/((int)al1.get(1)+(int)al1.get(2)); 234 } 235 else if((int)al2.get(1)==1) 236 { 237 System.out.print((int)al1.get(0)+"/"+"("+(int)al1.get(1)+"-"+(int)al1.get(2)+")"); 238 strr1=(int)al1.get(0)/((int)al1.get(1)-(int)al1.get(2)); 239 } 240 if((int)al2.get(1)==2) 241 { 242 System.out.print((int)al1.get(0)+"/"+(int)al1.get(1)+"*"+(int)al1.get(2)); 243 strr1=(int)al1.get(0)/(int)al1.get(1)*(int)al1.get(2); 244 } 245 } 246 } 247 else if((int)al2.get(0)<(int)al2.get(1)||(int)al2.get(0)==(int)al2.get(1))//比较优先级 248 { 249 if((int)al2.get(0)==0) 250 { 251 if((int)al2.get(1)==0) 252 { 253 System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"+"+(int)al1.get(2)); 254 strr1=(int)al1.get(0)+(int)al1.get(1)+(int)al1.get(2); 255 } 256 else if((int)al2.get(1)==1) 257 { 258 System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"-"+(int)al1.get(2)); 259 strr1=(int)al1.get(0)+(int)al1.get(1)-(int)al1.get(2); 260 } 261 else if((int)al2.get(1)==2) 262 { 263 System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"*"+(int)al1.get(2)); 264 strr1=(int)al1.get(0)+(int)al1.get(1)*(int)al1.get(2); 265 } 266 else if((int)al2.get(1)==3) 267 { 268 System.out.print((int)al1.get(0)+"+"+(int)al1.get(1)+"/"+(int)al1.get(2)); 269 strr1=(int)al1.get(0)+(int)al1.get(1)/(int)al1.get(2); 270 } 271 } 272 else if((int)al2.get(0)==1) 273 { 274 if((int)al2.get(1)==1) 275 { 276 System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"-"+(int)al1.get(2)); 277 strr1=(int)al1.get(0)-(int)al1.get(1)-(int)al1.get(2); 278 } 279 else if((int)al2.get(1)==2) 280 { 281 System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"*"+(int)al1.get(2)); 282 strr1=(int)al1.get(0)-(int)al1.get(1)*(int)al1.get(2); 283 } 284 else if((int)al2.get(1)==3) 285 { 286 System.out.print((int)al1.get(0)+"-"+(int)al1.get(1)+"/"+(int)al1.get(2)); 287 strr1=(int)al1.get(0)-(int)al1.get(1)/(int)al1.get(2); 288 } 289 } 290 else if((int)al2.get(0)==2) 291 { 292 if((int)al2.get(1)==2) 293 { 294 System.out.print((int)al1.get(0)+"*"+(int)al1.get(1)+"*"+(int)al1.get(2)); 295 strr1=(int)al1.get(0)*(int)al1.get(1)*(int)al1.get(2); 296 } 297 else if((int)al2.get(1)==3) 298 { 299 System.out.print((int)al1.get(0)+"*"+(int)al1.get(1)+"/"+(int)al1.get(2)); 300 strr1=(int)al1.get(0)*(int)al1.get(1)/(int)al1.get(2); 301 } 302 } 303 else if((int)al2.get(0)==3) 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 } 309 System.out.print("="); 310 ss=in.nextDouble(); 311 if(fra.judge(strr1,ss)==1) 312 { 313 sum++; 314 } 315 System.out.println("正确"+sum+"道题."); 316 } 317 else if(m>=4)//产生的操作大于等于4个 318 { 319 double sumss=0; 320 int r; 321 int rr=0; 322 int jj; 323 double list[]=new double[7];//存放和 324 double sums[]=new double[4]; 325 for(r=0;r<7;r++) 326 { 327 list[r]=0; 328 } 329 for(r=0;r<4;r++) 330 { 331 sums[r]=0; 332 } 333 if(al2.size()%2==0) 334 { 335 jj=al2.size()/2; 336 } 337 else 338 jj=(al2.size()-1)/2; 339 for(j=0;j<=jj;j=j+2)//输出运算表达式 340 { 341 k=j; 342 if((int)al2.get(j+2)==2||(int)al2.get(j+2)==3) 343 { 344 list[j+1]=1; 345 sums[rr+1]=1; 346 } 347 list[jj]=(int)al1.get(al1.size()-1); 348 System.out.print("("); 349 if((int)al2.get(j)>(int)al2.get(j+1))//比较运算符优先级 350 { 351 if((int)al2.get(j)==1)//第一个出现减法 352 { 353 System.out.print((int)al1.get(k)+"-"+(int)al1.get(k+1)+"+"+(int)al1.get(k+2)); 354 list[j]=(int)al1.get(k)-(int)al1.get(k+1)+(int)al1.get(k+2); 355 } 356 else if((int)al2.get(j)==2)//第一个出现乘法 357 { 358 if((int)al2.get(j+1)==0) 359 { 360 System.out.print((int)al1.get(k)+"*"+"("+(int)al1.get(k+1)+"+"+(int)al1.get(k+2)+")"); 361 list[j]=(int)al1.get(k)*+((int)al1.get(k+1)+(int)al1.get(k+2)); 362 } 363 else if((int)al2.get(j+1)==1) 364 { 365 System.out.print((int)al1.get(k)+"*"+"("+(int)al1.get(k+1)+"-"+(int)al1.get(k+2)+")"); 366 list[j]=(int)al1.get(k)*((int)al1.get(k+1)-(int)al1.get(k+2)); 367 } 368 } 369 else if((int)al2.get(j)==3)//第一个出现除法 370 { 371 if((int)al2.get(j+1)==0) 372 { 373 System.out.print((int)al1.get(k)+"/"+"("+(int)al1.get(k+1)+"+"+(int)al1.get(k+2)+")"); 374 list[j]=(int)al1.get(k)/((int)al1.get(k+1)+(int)al1.get(k+2)); 375 } 376 else if((int)al2.get(j+1)==1) 377 { 378 if((int)al1.get(k+1)==(int)al1.get(k+2)) 379 { 380 System.out.print((int)al1.get(k)+"/"+"("+((int)al1.get(k+1)+1)+"-"+(int)al1.get(k+2)+")"); 381 list[j]=(int)al1.get(k)/(((int)al1.get(k+1)+1)-(int)al1.get(k+2)); 382 } 383 else 384 { 385 System.out.print((int)al1.get(k)+"/"+"("+(int)al1.get(k+1)+"-"+(int)al1.get(k+2)+")"); 386 list[j]=(int)al1.get(k)/((int)al1.get(k+1)-(int)al1.get(k+2)); 387 } 388 } 389 if((int)al2.get(j+1)==2) 390 { 391 System.out.print((int)al1.get(k)+"/"+(int)al1.get(k+1)+"*"+(int)al1.get(k+2)); 392 list[j]=(int)al1.get(k)/(int)al1.get(k+1)*(int)al1.get(k+2); 393 } 394 } 395 } 396 else if((int)al2.get(j)<(int)al2.get(j+1)||(int)al2.get(j)==(int)al2.get(j+1)) 397 { 398 if((int)al2.get(j)==0) 399 { 400 if((int)al2.get(j+1)==0)//第一个出现加法 401 { 402 System.out.print((int)al1.get(k)+"+"+(int)al1.get(k+1)+"+"+(int)al1.get(k+2)); 403 list[j]=(int)al1.get(k)+(int)al1.get(k+1)+(int)al1.get(k+2); 404 } 405 else if((int)al2.get(j+1)==1) 406 { 407 System.out.print((int)al1.get(k)+"+"+(int)al1.get(k+1)+"-"+(int)al1.get(k+2)); 408 list[j]=(int)al1.get(k)+(int)al1.get(k+1)-(int)al1.get(k+2); 409 } 410 else if((int)al2.get(j+1)==2) 411 { 412 System.out.print((int)al1.get(k)+"+"+(int)al1.get(k+1)+"*"+(int)al1.get(k+2)); 413 list[j]=(int)al1.get(k)+(int)al1.get(k+1)*(int)al1.get(k+2); 414 } 415 else if((int)al2.get(j+1)==3) 416 { 417 System.out.print((int)al1.get(k)+"+"+(int)al1.get(k+1)+"/"+(int)al1.get(k+2)); 418 list[j]=(int)al1.get(k)+(int)al1.get(k+1)/(int)al1.get(k+2); 419 } 420 } 421 else if((int)al2.get(j)==1)//第一个出现减法 422 { 423 if((int)al2.get(j+1)==1) 424 { 425 System.out.print((int)al1.get(k)+"-"+(int)al1.get(k+1)+"-"+(int)al1.get(k+2)); 426 list[j]=(int)al1.get(k)-(int)al1.get(k+1)-(int)al1.get(k+2); 427 } 428 else if((int)al2.get(j+1)==2) 429 { 430 System.out.print((int)al1.get(k)+"-"+(int)al1.get(k+1)+"*"+(int)al1.get(k+2)); 431 list[j]=(int)al1.get(k)-(int)al1.get(k+1)*(int)al1.get(k+2); 432 } 433 else if((int)al2.get(j+1)==3) 434 { 435 System.out.print((int)al1.get(k)+"-"+(int)al1.get(k+1)+"/"+(int)al1.get(k+2)); 436 list[j]=(int)al1.get(k)-(int)al1.get(k+1)/(int)al1.get(k+2); 437 } 438 } 439 else if((int)al2.get(j)==2)//第一个出现乘法 440 { 441 if((int)al2.get(j+1)==2) 442 { 443 System.out.print((int)al1.get(k)+"*"+(int)al1.get(k+1)+"*"+(int)al1.get(k+2)); 444 list[j]=(int)al1.get(k)*(int)al1.get(k+1)*(int)al1.get(k+2); 445 } 446 else if((int)al2.get(j+1)==3) 447 { 448 System.out.print((int)al1.get(k)+"*"+(int)al1.get(k+1)+"/"+(int)al1.get(k+2)); 449 list[j]=(int)al1.get(k)*(int)al1.get(k+1)/(int)al1.get(k+2); 450 } 451 } 452 else if((int)al2.get(j)==3)//第一个出现除法 453 { 454 System.out.print((int)al1.get(k)+"/"+"("+(int)al1.get(k+1)+"/"+(int)al1.get(k+2)+")"); 455 list[j]=(int)al1.get(k)/((int)al1.get(k+1)/(int)al1.get(k+2)); 456 } 457 } 458 System.out.print(")"); 459 if((int)al2.get(j+2)==0) 460 { 461 System.out.print("+"); 462 sums[rr]=list[j]; 463 sums[jj]=(int)al1.get(al1.size()-1); 464 } 465 else if((int)al2.get(j+2)==1) 466 { 467 System.out.print("-"); 468 sums[rr]=list[j]; 469 sums[jj]=(int)al1.get(al1.size()-1); 470 } 471 else if((int)al2.get(j+2)==2) 472 { 473 System.out.print("*"); 474 sums[rr]=list[j]*list[j+1]; 475 } 476 else if((int)al2.get(j+2)==3) 477 { 478 System.out.print("/"); 479 sums[rr]=list[j]/list[j+1]; 480 } 481 rr++; 482 j++; 483 /* if((int)al2.get(al1.size()-1)==0||(int)al2.get(al1.size()-1)==1) 484 { 485 sums[jj]=(int)al1.get(al1.size()-1); 486 }*/ 487 } 488 int rrr=1; 489 sumss=sums[0]; 490 for(j=0;j<jj;j=j+2) 491 { 492 if((int)al2.get(j+2)==0) 493 { 494 sumss+=sums[rrr]; 495 } 496 else if((int)al2.get(j+2)==1) 497 { 498 sumss=sumss-sums[rrr]; 499 } 500 else if((int)al2.get(j+2)==2) 501 { 502 sumss=sumss*sums[rrr]; 503 } 504 else if((int)al2.get(j+2)==2) 505 { 506 sumss=sumss/sums[rrr]; 507 } 508 } 509 System.out.print((int)al1.get(al1.size()-1)); 510 //输出最后一位操作数 511 System.out.print("="); 512 strr1=in.nextDouble(); 513 if(fra.judge(sumss,strr1)==1) 514 { 515 sum++; 516 } 517 System.out.println(sumss); 518 System.out.println("正确"+sum+"道题."); 519 } 520 } 521 } 522 523 else if(str.equals("N"))//不需要产生括号 524 { 525 System.out.println("请输入数值范围:"); 526 N2=in.nextInt(); 527 System.out.println("请选择是否有无乘除法的运算题(Y/N):"); 528 str1=in.next(); 529 if(str1.equals("Y"))//有乘除法 530 { 531 System.out.println("请选择是否有无余数的运算题(Y/N):"); 532 str2=in.next(); 533 534 if(str2.equals("Y"))//需要有余数 535 { 536 System.out.println("请选择是否有负数(Y/N):"); 537 str3=in.next(); 538 for(i=0;i<N;i++) 539 { 540 int a,b,c,c1,h,h2; 541 a=(int) (Math.random()*N2); 542 b=(int) (Math.random()*N2); 543 h=(int) (Math.random()*4); 544 //控制加减运算符 545 c=(int) (Math.random()*(N2-1)+1); 546 c1=(int) (Math.random()*10+1); 547 //控制倍数 548 549 if(str3.equals("Y"))//有负数 550 { 551 if(h==0)//加法 552 { 553 h2=(int) (Math.random()*2); 554 //控制有无负数 555 if(h2==0) 556 { 557 System.out.println(a+"+"+b+"="); 558 double s; 559 s=a+b; 560 strr2=in.nextDouble(); 561 if(fra.judge(s,strr2)==1) 562 { 563 sum++; 564 } 565 566 } 567 else if(h2==1) 568 { 569 System.out.println("-"+a+"+"+b+"="); 570 double s; 571 s=-a+b; 572 strr2=in.nextDouble(); 573 if(fra.judge(s,strr2)==1) 574 { 575 sum++; 576 } 577 578 } 579 } 580 if(h==1)//减法 581 { 582 h2=(int) (Math.random()*2); 583 //控制有无负数 584 if(h2==0) 585 { 586 System.out.println(a+"-"+b+"="); 587 double s; 588 s=a-b; 589 strr2=in.nextDouble(); 590 if(fra.judge(s,strr2)==1) 591 { 592 sum++; 593 } 594 } 595 else if(h2==1) 596 { 597 System.out.println("-"+a+"-"+b+"="); 598 double s; 599 s=-a-b; 600 strr2=in.nextDouble(); 601 if(fra.judge(s,strr2)==1) 602 { 603 sum++; 604 } 605 } 606 } 607 } 608 else if(str3.equals("N"))//无负数 609 { 610 if(h==0) 611 { 612 System.out.println(a+"+"+b+"="); 613 double s; 614 s=a+b; 615 strr2=in.nextDouble(); 616 if(fra.judge(s,strr2)==1) 617 { 618 sum++; 619 } 620 621 } 622 if(h==1) 623 { 624 System.out.println(a+"-"+b+"="); 625 double s; 626 s=a-b; 627 strr2=in.nextDouble(); 628 if(fra.judge(s,strr2)==1) 629 { 630 sum++; 631 } 632 633 } 634 } 635 if(h==2) 636 { 637 System.out.println(a+"*"+b+"="); 638 double s; 639 s=a*b; 640 strr2=in.nextDouble(); 641 if(fra.judge(s,strr2)==1) 642 { 643 sum++; 644 } 645 646 } 647 if(h==3) 648 { 649 int d,k; 650 k=(int) (Math.random()*(c-1)+1); 651 //必须产生余数 652 d=c*c1+k; 653 System.out.println(d+"/"+c+"="); 654 double s; 655 s=d/c; 656 strr2=in.nextDouble(); 657 if(fra.judge(s,strr2)==1) 658 { 659 sum++; 660 } 661 662 } 663 } 664 } 665 else if(str2.equals("N"))//不需要产生余数 666 { 667 System.out.println("请选择是否有负数(Y/N):"); 668 str3=in.next(); 669 for(i=0;i<N;i++) 670 { 671 int a,b,c,c1,h,h2; 672 a=(int) (Math.random()*N2); 673 b=(int) (Math.random()*N2); 674 h=(int) (Math.random()*4); 675 //控制加减运算符 676 c=(int) (Math.random()*(N2-1)+1); 677 c1=(int) (Math.random()*10+1); 678 //控制倍数 679 680 if(str3.equals("Y"))//有负数 681 { 682 if(h==0)//加法 683 { 684 h2=(int) (Math.random()*2); 685 //控制有无负数 686 if(h2==0) 687 { 688 System.out.println(a+"+"+b+"="); 689 double s; 690 s=a+b; 691 strr2=in.nextDouble(); 692 if(fra.judge(s,strr2)==1) 693 { 694 sum++; 695 } 696 697 } 698 else if(h2==1) 699 { 700 System.out.println("-"+a+"+"+b+"="); 701 double s; 702 s=-a+b; 703 strr2=in.nextDouble(); 704 if(fra.judge(s,strr2)==1) 705 { 706 sum++; 707 } 708 709 } 710 } 711 if(h==1)//减法 712 { 713 h2=(int) (Math.random()*2); 714 //控制有无负数 715 if(h2==0) 716 { 717 System.out.println(a+"-"+b+"="); 718 double s; 719 s=a-b; 720 strr2=in.nextDouble(); 721 if(fra.judge(s,strr2)==1) 722 { 723 sum++; 724 } 725 } 726 else if(h2==1) 727 { 728 System.out.println("-"+a+"-"+b+"="); 729 double s; 730 s=-a-b; 731 strr2=in.nextDouble(); 732 if(fra.judge(s,strr2)==1) 733 { 734 sum++; 735 } 736 } 737 } 738 } 739 else if(str3.equals("N"))//无负数 740 { 741 if(h==0) 742 { 743 System.out.println(a+"+"+b+"="); 744 double s; 745 s=a+b; 746 strr2=in.nextDouble(); 747 if(fra.judge(s,strr2)==1) 748 { 749 sum++; 750 } 751 } 752 if(h==1) 753 { 754 System.out.println(a+"-"+b+"="); 755 double s; 756 s=a-b; 757 strr2=in.nextDouble(); 758 if(fra.judge(s,strr2)==1) 759 { 760 sum++; 761 } 762 } 763 } 764 if(h==2)//乘法 765 { 766 System.out.println(a+"*"+b+"="); 767 double s; 768 s=a*b; 769 strr2=in.nextDouble(); 770 if(fra.judge(s,strr2)==1) 771 { 772 sum++; 773 } 774 } 775 if(h==3)//除法,不产生余数 776 { 777 int d; 778 //不能产生余数 779 d=c*c1; 780 System.out.println(d+"/"+c+"="); 781 double s; 782 s=d/c; 783 strr2=in.nextDouble(); 784 if(fra.judge(s,strr2)==1) 785 { 786 sum++; 787 } 788 789 } 790 } 791 } 792 } 793 794 else if(str1.equals("N"))//没有乘除法 795 { 796 int a,b,h,h2; 797 System.out.println("请选择是否有负数(Y/N):"); 798 str3=in.next(); 799 for(i=0;i<N;i++) 800 { 801 a=(int) (Math.random()*N2); 802 b=(int) (Math.random()*N2); 803 h=(int) (Math.random()*2); 804 //控制运算符 805 806 if(str3.equals("Y"))//有负数 807 { 808 if(h==0)//加法 809 { 810 h2=(int) (Math.random()*2); 811 //控制有无负数 812 if(h2==0) 813 { 814 System.out.println(a+"+"+b+"="); 815 double s; 816 s=a+b; 817 strr2=in.nextDouble(); 818 if(fra.judge(s,strr2)==1) 819 { 820 sum++; 821 } 822 } 823 else if(h2==1) 824 { 825 System.out.println("-"+a+"+"+b+"="); 826 double s; 827 s=-a+b; 828 strr2=in.nextDouble(); 829 if(fra.judge(s,strr2)==1) 830 { 831 sum++; 832 } 833 } 834 } 835 if(h==1)//减法 836 { 837 h2=(int) (Math.random()*2); 838 //控制有无负数 839 if(h2==0) 840 { 841 System.out.println(a+"-"+b+"="); 842 double s; 843 s=a-b; 844 strr2=in.nextDouble(); 845 if(fra.judge(s,strr2)==1) 846 { 847 sum++; 848 } 849 } 850 else if(h2==1) 851 { 852 System.out.println("-"+a+"-"+b+"="); 853 double s; 854 s=-a-b; 855 strr2=in.nextDouble(); 856 if(fra.judge(s,strr2)==1) 857 { 858 sum++; 859 } 860 } 861 } 862 } 863 else if(str3.equals("N"))//无负数 864 { 865 if(h==0) 866 { 867 System.out.println(a+"+"+b+"="); 868 double s; 869 s=a+b; 870 strr2=in.nextDouble(); 871 if(fra.judge(s,strr2)==1) 872 { 873 sum++; 874 } 875 } 876 if(h==1) 877 { 878 System.out.println(a+"-"+b+"="); 879 double s; 880 s=a-b; 881 strr2=in.nextDouble(); 882 if(fra.judge(s,strr2)==1) 883 { 884 sum++; 885 } 886 } 887 } 888 } 889 } 890 } 891 } 892 in.close(); 893 } 894 } 895 class change{ 896 Scanner in=new Scanner(System.in); 897 int change_(int a,int b)//化简分数 898 { 899 int r1; 900 if(a>b) 901 { 902 r1=b; 903 } 904 else 905 r1=a; 906 int k=0; 907 for(int j=1;j<=r1;j++) 908 { 909 if(a%j==0&&b%j==0) 910 { 911 k=j; 912 } 913 } 914 return k; 915 } 916 int judge_FRA(String str1,String str)//分数运算判断对错,计算正确次数 917 { 918 int ju; 919 if(str.equals(str1)) 920 { 921 System.out.println("正确"); 922 ju=1; 923 } 924 else 925 { 926 System.out.println("错误"); 927 ju=0; 928 } 929 return ju; 930 } 931 int judge(double s,double ss)//整数判断对错,计算正确次数 932 { 933 int ju; 934 if(s==ss) 935 { 936 System.out.println("正确"); 937 ju=1; 938 } 939 else 940 { 941 System.out.println("错误"); 942 ju=0; 943 } 944 return ju; 945 } 946 }
结果截图:
个人总结:要先显示算式内容,再判断对错。计算带括号的式子时,后面存入的数总会覆盖前面的内容
周活动总结表
姓名:严羽卿 日期 2016/3/26
|
听课 |
编写代码 |
阅读课本 |
准备考试 |
讨论 |
写报告 |
日总计 |
周日 |
|
170 |
|
|
|
|
170 |
周一 |
100 |
|
|
|
|
|
100 |
周二 |
|
|
35 |
|
|
|
35 |
周三 |
|
|
45 |
|
57 |
|
102 |
周四 |
|
160 |
|
|
|
|
160 |
周五 |
|
157 |
|
|
|
32 |
189 |
周六 |
|
|
60 |
|
|
30 |
90 |
周总计 |
100 |
487 |
140 |
|
57 |
62 |
846 |
时间记录日志
学生:严羽卿 日期:2016/3/26
教师:王建民 课程:软件工程
日期 |
开始时间 |
结束时间 |
中断时间 |
净时间 |
活动 |
备注 |
C |
U |
3/20 |
8:30 |
11:30 |
20 |
160 |
编程 |
聊天 |
|
|
3/21 |
8:00 |
09:50 |
10 |
100 |
听课 |
休息 |
|
|
3/22 |
14:53 |
15:35 |
7 |
35 |
读《构建之法 》 |
休息 |
|
|
3/23 |
15:30 |
17:32 |
20 |
102 |
讨论程序,读《构建之法》 |
四则运算3,两人小组讨论 聊天 |
|
|
3/24 |
18:00 |
21:15 |
35 |
160 |
编程序 |
开始编写四则运算3 吃饭 |
|
|
3/25 |
16:30 |
18:00 |
10 |
80 |
编程序 |
休息 |
|
|
3/25 |
19:23 |
21:30 |
18 |
109 |
编程序,写报告 |
聊天 |
|
|
3/26 |
10:30 |
12:30 |
12 |
108 |
最后整理程序 作业 读《构建之法》 |
|
|
|
缺陷记录日志
学生:严羽卿
日期:2016/3/18
教员:王建民
程序号:四则运算3
日期 |
编号 |
类型 |
引入阶段 |
排除阶段 |
修复时间 |
修复缺陷 |
3/24 |
1 |
|
编码 |
编译 |
5min |
|
描述:先输入答案才输出算式,调换顺序就可以 |
||||||
3/24 |
2 |
|
设计 |
编译 |
30min |
|
描述:括号的产生有歧义 |
||||||
3/25 |
3 |
|
编码 |
编译 |
30min |
|
描述:计算的正确答案经过循环总是更新,不能相加 |
||||||
3/25 |
4 |
|
编码 |
编译 |
10min |
|
描述:Exception in thread “mian”:Index: 7,Size: 7 |