小学四则运算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

posted @ 2016-03-26 11:06  卿语  阅读(265)  评论(0编辑  收藏  举报