标签:
对四则运算2代码按照代码规范进行改进后的代码:
1 package operation; 2 3 import java.util.*; 4 5 public class SiZeYunSuan { 6 7 void result() 8 { 9 Scanner sca=new Scanner(System.in); 10 Operation op=new Operation(); 11 //确定出题数量 12 System.out.println("输入出题数量 "); 13 int num=sca.nextInt(); 14 while(num<=0) 15 { 16 System.out.println("输入不合法,重新输入"); 17 num=sca.nextInt(); 18 } 19 String s[]=new String[num]; 20 //确定数值范围 21 System.out.println("输入进行运算的最低和最高数值范围(整数不为负数,且最大值大于最小值)"); 22 int min,max; 23 min=sca.nextInt(); 24 max=sca.nextInt(); 25 while((min<0)||(max<=min)) 26 { 27 System.out.println("输入不合法,重新输入"); 28 min=sca.nextInt(); 29 max=sca.nextInt(); 30 } 31 //确定是否有括号 32 System.out.println("输入 (0)有括号 (1)无括号 "); 33 int k=sca.nextInt(); 34 int i,j; 35 //有括号 36 if(k==0) 37 { 38 for(i=0;i<num;i++) 39 { 40 j=0; 41 boolean bool=true; 42 s[i]=op.bra(min, max); 43 //判断是否重复 44 while(bool&&(i!=0)) 45 { 46 while(s[i].equals(s[j])) 47 { 48 s[i]=op.bra(min, max); 49 j=0; 50 } 51 j++; 52 if(j==i) 53 { 54 bool=false; 55 } 56 } 57 System.out.println("("+(i+1)+") "+s[i]); 58 } 59 } 60 else if(k==1) 61 { 62 //确定是否有乘除法 63 int select; 64 System.out.println("除加减法之外,选择运算是否有乘除法 "); 65 System.out.println("输入 (0)无乘除法(加减无负数) (1)无乘除法(加减有负数) " 66 +"\n"+"(2)只有乘法 (3)只有除法(无余数) (4)只有除法(有余数) (5)混合运算 "); 67 select=sca.nextInt(); 68 if(select==0) 69 { 70 for(i=0;i<(num/2);i++) 71 { 72 j=0; 73 boolean bool=true; 74 s[i]=op.addition(min, max); 75 //判断是否重复 76 while(bool&&(i!=0)) 77 { 78 while(s[i].equals(s[j])) 79 { 80 s[i]=op.addition(min, max); 81 j=0; 82 } 83 j++; 84 if(j==i) 85 { 86 bool=false; 87 } 88 } 89 System.out.println("("+(i+1)+") "+s[i]); 90 } 91 for(i=(num/2);i<num;i++) 92 { 93 j=num/2; 94 boolean bool=true; 95 s[i]=op.subtraction(min, max); 96 //判断是否重复 97 while(bool&&(i!=num/2)) 98 { 99 while(s[i].equals(s[j])) 100 { 101 s[i]=op.subtraction(min, max); 102 j=num/2; 103 } 104 j++; 105 if(j==i) 106 { 107 bool=false; 108 } 109 } 110 System.out.println("("+(i+1)+") "+s[i]); 111 } 112 } 113 else if(select==1) 114 { 115 for(i=0;i<(num/2);i++) 116 { 117 j=0; 118 boolean bool=true; 119 s[i]=op.addition(min, max); 120 //判断是否重复 121 while(bool&&(i!=0)) 122 { 123 while(s[i].equals(s[j])) 124 { 125 s[i]=op.addition(min, max); 126 j=0; 127 } 128 j++; 129 if(j==i) 130 { 131 bool=false; 132 } 133 } 134 System.out.println("("+(i+1)+") "+s[i]); 135 } 136 for(i=(num/2);i<num;i++) 137 { 138 j=num/2; 139 boolean bool=true; 140 s[i]=op.subtraction1(min, max); 141 //判断是否重复 142 while(bool&&(i!=num/2)) 143 { 144 while(s[i].equals(s[j])) 145 { 146 s[i]=op.subtraction1(min, max); 147 j=num/2; 148 } 149 j++; 150 if(j==i) 151 { 152 bool=false; 153 } 154 } 155 System.out.println("("+(i+1)+") "+s[i]); 156 } 157 } 158 else if(select==2) 159 { 160 for(i=0;i<(num/3);i++) 161 { 162 j=0; 163 boolean bool=true; 164 s[i]=op.addition(min, max); 165 //判断是否重复 166 while(bool&&(i!=0)) 167 { 168 while(s[i].equals(s[j])) 169 { 170 s[i]=op.addition(min, max); 171 j=0; 172 } 173 j++; 174 if(j==i) 175 { 176 bool=false; 177 } 178 } 179 System.out.println("("+(i+1)+") "+s[i]); 180 } 181 for(i=num/3;i<(2*(num/3));i++) 182 { 183 j=num/3; 184 boolean bool=true; 185 s[i]=op.subtraction(min, max); 186 //判断是否重复 187 while(bool&&(i!=num/3)) 188 { 189 while(s[i].equals(s[j])) 190 { 191 s[i]=op.subtraction(min, max); 192 j=num/3; 193 } 194 j++; 195 if(j==i) 196 { 197 bool=false; 198 } 199 } 200 System.out.println("("+(i+1)+") "+s[i]); 201 } 202 for(i=(2*(num/3));i<num;i++) 203 { 204 j=(2*(num/3)); 205 boolean bool=true; 206 s[i]=op.multiplication(min, max); 207 //判断是否重复 208 while(bool&&(i!=(2*(num/3)))) 209 { 210 while(s[i].equals(s[j])) 211 { 212 s[i]=op.multiplication(min, max); 213 j=(2*(num/3)); 214 } 215 j++; 216 if(j==i) 217 { 218 bool=false; 219 } 220 } 221 System.out.println("("+(i+1)+") "+s[i]); 222 } 223 } 224 else if(select==3) 225 { 226 for(i=0;i<(num/3);i++) 227 { 228 j=0; 229 boolean bool=true; 230 s[i]=op.addition(min, max); 231 //判断是否重复 232 while(bool&&(i!=0)) 233 { 234 while(s[i].equals(s[j])) 235 { 236 s[i]=op.addition(min, max); 237 j=0; 238 } 239 j++; 240 if(j==i) 241 { 242 bool=false; 243 } 244 } 245 System.out.println("("+(i+1)+") "+s[i]); 246 } 247 for(i=num/3;i<(2*(num/3));i++) 248 { 249 j=num/3; 250 boolean bool=true; 251 s[i]=op.subtraction(min, max); 252 //判断是否重复 253 while(bool&&(i!=num/3)) 254 { 255 while(s[i].equals(s[j])) 256 { 257 s[i]=op.subtraction(min, max); 258 j=num/3; 259 } 260 j++; 261 if(j==i) 262 { 263 bool=false; 264 } 265 } 266 System.out.println("("+(i+1)+") "+s[i]); 267 } 268 for(i=(2*(num/3));i<num;i++) 269 { 270 j=(2*(num/3)); 271 boolean bool=true; 272 s[i]=op.division(min, max); 273 //判断是否重复 274 while(bool&&(i!=(2*(num/3)))) 275 { 276 while(s[i].equals(s[j])) 277 { 278 s[i]=op.division(min, max); 279 j=(2*(num/3)); 280 } 281 j++; 282 if(j==i) 283 { 284 bool=false; 285 } 286 } 287 System.out.println("("+(i+1)+") "+s[i]); 288 } 289 } 290 else if(select==4) 291 { 292 for(i=0;i<(num/3);i++) 293 { 294 j=0; 295 boolean bool=true; 296 s[i]=op.addition(min, max); 297 //判断是否重复 298 while(bool&&(i!=0)) 299 { 300 while(s[i].equals(s[j])) 301 { 302 s[i]=op.addition(min, max); 303 j=0; 304 } 305 j++; 306 if(j==i) 307 { 308 bool=false; 309 } 310 } 311 System.out.println("("+(i+1)+") "+s[i]); 312 } 313 for(i=num/3;i<(2*(num/3));i++) 314 { 315 j=num/3; 316 boolean bool=true; 317 s[i]=op.subtraction(min, max); 318 //判断是否重复 319 while(bool&&(i!=num/3)) 320 { 321 while(s[i].equals(s[j])) 322 { 323 s[i]=op.subtraction(min, max); 324 j=num/3; 325 } 326 j++; 327 if(j==i) 328 { 329 bool=false; 330 } 331 } 332 System.out.println("("+(i+1)+") "+s[i]); 333 } 334 for(i=(2*(num/3));i<num;i++) 335 { 336 j=(2*(num/3)); 337 boolean bool=true; 338 s[i]=op.division1(min, max); 339 //判断是否重复 340 while(bool&&(i!=(2*(num/3)))) 341 { 342 while(s[i].equals(s[j])) 343 { 344 s[i]=op.division1(min, max); 345 j=(2*(num/3)); 346 } 347 j++; 348 if(j==i) 349 { 350 bool=false; 351 } 352 } 353 System.out.println("("+(i+1)+") "+s[i]); 354 } 355 } 356 else if(select==5) 357 { 358 for(i=0;i<num;i++) 359 { 360 j=0; 361 boolean bool=true; 362 s[i]=op.mixop(min, max); 363 //判断是否重复 364 while(bool&&(i!=0)) 365 { 366 while(s[i].equals(s[j])) 367 { 368 s[i]=op.mixop(min, max); 369 j=0; 370 } 371 j++; 372 if(j==i) 373 { 374 bool=false; 375 } 376 } 377 System.out.println("("+(i+1)+") "+s[i]); 378 } 379 } 380 else 381 { 382 System.out.println("输入错误"); 383 } 384 } 385 else 386 { 387 System.out.println("输入不合法"); 388 } 389 } 390 public static void main(String[] args) { 391 try 392 { 393 SiZeYunSuan s=new SiZeYunSuan(); 394 s.result(); 395 } 396 catch(Exception e) 397 { 398 System.out.println("输入不合法,请重新执行,按照要求输入"); 399 } 400 } 401 402 } 403 404 package operation; 405 406 class Operation { 407 Random1 ran1=new Random1(); 408 409 String bra(int min,int max)//有括号 410 { 411 String str=""; 412 int a[]; 413 a=new int[10]; 414 int d=ran1.setRandom0(8)+3;//算式内数的个数 415 for(int i=0;i<d;i++) 416 { 417 int c1=ran1.setRandom0(4);//确定运算符号 418 a[i]=ran1.setRandom(min,max);//确定参加运算的数 419 420 if(i==0) 421 { 422 str+="("; 423 } 424 str+=a[i]; 425 if(i==(d/2)) 426 { 427 str+=")"; 428 } 429 if(c1==0&&i!=d-1) 430 { 431 str+="+"; 432 } 433 if(c1==1&&i!=d-1) 434 { 435 str+="-"; 436 } 437 if(c1==2&&i!=d-1) 438 { 439 str+="x"; 440 } 441 if(c1==3&&i!=d-1) 442 { 443 str+="÷"; 444 } 445 if(i==d-1) 446 { 447 str+="="; 448 } 449 } 450 return str; 451 } 452 453 String mixop(int min,int max)//有括号 454 { 455 String str=""; 456 int a[]; 457 a=new int[10]; 458 int d=ran1.setRandom0(8)+3;//算式内数的个数 459 for(int i=0;i<d;i++) 460 { 461 int c1=ran1.setRandom0(4);//确定运算符号 462 a[i]=ran1.setRandom(min,max);//确定参加运算的数 463 str+=a[i]; 464 if(c1==0&&i!=d-1) 465 { 466 str+="+"; 467 } 468 if(c1==1&&i!=d-1) 469 { 470 str+="-"; 471 } 472 if(c1==2&&i!=d-1) 473 { 474 str+="x"; 475 } 476 if(c1==3&&i!=d-1) 477 { 478 str+="÷"; 479 } 480 if(i==d-1) 481 { 482 str+="="; 483 } 484 } 485 return str; 486 } 487 488 String addition(int min,int max)//加法 489 { 490 String str=""; 491 int a[],c,i; 492 c=ran1.setRandom(2, 4);//加法运算的个数,最少2个,最多4个 493 a=new int[c]; 494 for(i=0;i<c;i++) 495 { 496 a[i]=ran1.setRandom(min,max); 497 if(i<(c-1)) 498 { 499 str+=a[i]+" + "; 500 } 501 else 502 { 503 str+=a[i]+" ="; 504 } 505 } 506 return str; 507 } 508 509 String subtraction(int min,int max)//减法无负数 510 { 511 String str=""; 512 int a[],c,i,re=0;//a[]随机数存放的数组 513 c=ran1.setRandom(2, 4);//减法运算的个数,最少2个,最多4个 514 a=new int[c]; 515 for(i=0;i<c;i++) 516 { 517 a[i]=ran1.setRandom(min,max); 518 if(i>0) 519 re+=a[i]; 520 } 521 while(a[0]<re)//当最大值比其他值的和小时,重新随机c个数 522 { 523 re=0; 524 for(i=0;i<c;i++) 525 { 526 a[i]=ran1.setRandom(min,max); 527 if(i>0) 528 { 529 re+=a[i]; 530 } 531 } 532 } 533 for(i=0;i<c;i++) 534 { 535 if(i<c-1) 536 { 537 str+=a[i]+" - "; 538 } 539 else 540 { 541 str+=a[i]+" ="; 542 } 543 } 544 return str; 545 } 546 String subtraction1(int min,int max)//减法有负数 547 { 548 String str=""; 549 int a[],c,i,re=0;//a[]随机数存放的数组 550 c=ran1.setRandom(2, 4);//减法运算的个数,最少2个,最多4个 551 a=new int[c]; 552 for(i=0;i<c;i++) 553 { 554 a[i]=ran1.setRandom(min,max); 555 } 556 for(i=0;i<c;i++) 557 { 558 if(i<c-1) 559 { 560 str+=a[i]+" - "; 561 } 562 else 563 { 564 str+=a[i]+" ="; 565 } 566 } 567 return str; 568 } 569 570 String multiplication(int min,int max)//乘法 571 { 572 String str=""; 573 int a[],c,i; 574 c=ran1.setRandom(2, 4);//乘法运算的个数,最少2个,最多4个 575 a=new int[c]; 576 for(i=0;i<c;i++) 577 { 578 a[i]=ran1.setRandom(min,max); 579 if(i<(c-1)) 580 { 581 str+=a[i]+" x "; 582 } 583 else 584 { 585 str+=a[i]+" ="; 586 } 587 } 588 return str; 589 } 590 591 String division(int min,int max)//除法无余数 592 { 593 String str=""; 594 int a[],c,i,re=1; 595 c=ran1.setRandom(2, 4);//除法运算的个数,最少2个,最多4个 596 a=new int[c]; 597 for(i=0;i<c;i++) 598 { 599 a[i]=ran1.setRandom(min,max); 600 if(i>0) 601 { 602 re*=a[i]; 603 } 604 } 605 while((re==0)||(a[0]%re!=0)) 606 { 607 re=1; 608 for(i=0;i<c;i++) 609 { 610 a[i]=ran1.setRandom(min,max); 611 if(i>0) 612 { 613 re*=a[i]; 614 } 615 } 616 } 617 for(i=c-1;i>=0;i--) 618 { 619 if(i>0) 620 { 621 str+=a[i]+" ÷ "; 622 } 623 else 624 { 625 str+=a[i]+" ="; 626 } 627 } 628 return str; 629 } 630 631 String division1(int min,int max)//除法有余数 632 { 633 String str=""; 634 int a[],c,i; 635 c=ran1.setRandom(2, 4);//除法运算的个数,最少2个,最多4个 636 a=new int[c]; 637 for(i=0;i<c;i++) 638 { 639 a[i]=ran1.setRandom(min,max); 640 if(a[i]==0) 641 { 642 a[i]=ran1.setRandom(min,max); 643 } 644 } 645 for(i=0;i<c;i++) 646 { 647 if(i<(c-1)) 648 { 649 str+=a[i]+" ÷ "; 650 } 651 else 652 { 653 str+=a[i]+" ="; 654 } 655 } 656 return str; 657 } 658 } 659 660 package operation; 661 662 import java.util.Random; 663 664 class Random1 { 665 int setRandom(int min,int max){ 666 Random ran=new Random(); 667 int r=ran.nextInt(max-min+1)+min; 668 return r; 669 } 670 int setRandom0(int num){ 671 Random ran=new Random(); 672 int r=ran.nextInt(num); 673 return r; 674 } 675 }
测试用例如下:
1.正常情况下,并且有括号
2.输入错误,不符合要求
3.正常情况下,加减无负数运算
4.正常情况下,乘法运算
5.正常情况下,混合运算
6.正常情况下,除法有余数运算
7.正常情况下,加减有负数运算
8.正常情况下,除法无余数运算
标签:
原文地址:http://www.cnblogs.com/jinghun/p/5322658.html