码迷,mamicode.com
首页 > 其他好文 > 详细

软件工程个人作业03

时间:2016-03-26 13:54:55      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:

对四则运算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 }
Operation

 

测试用例如下:

1.正常情况下,并且有括号

技术分享

 

 

 

2.输入错误,不符合要求

技术分享

3.正常情况下,加减无负数运算

技术分享

4.正常情况下,乘法运算

技术分享技术分享

5.正常情况下,混合运算

技术分享

6.正常情况下,除法有余数运算

技术分享

7.正常情况下,加减有负数运算

技术分享

8.正常情况下,除法无余数运算

技术分享

软件工程个人作业03

标签:

原文地址:http://www.cnblogs.com/jinghun/p/5322658.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!