第九周(11.11-11.17)----结对项目----实现任意数量题目、解决除数为零问题

  需求功能里是能够出任意个题目,我选择根据用户输入的数目进行while循环实现这个功能。为此我将原来主类的六种题型随意swich()一种迁移到了computer类中,创建了anwser()方法。这个方法就是前面博客所提到了出六种题目中的一种。

  在解决除数为零这个问题上,我在 int count(String a, String b, String e)中设置了一个标志位int chushu。count这个方法是用来计算后缀表达式的,并把结果返回到栈顶。这里的参数e就是操作符。如果e是除号的时候,进行接下来的判断,如果除数b是零,就直接返回chushu=0;如果b不是零就返回a/b。而我接受这个标志的时候,是在我要出题的时候:题目已经出了,但是有的除数是零,这个时候在主类中就要重新出题,直到把要求的数量出满为止。

随机出题:

 1     public String anwser(){
 2         computer yl = new computer();
 3         int y1=yl.randomnum();
 4         int y2=yl.randomnum();
 5         int y3=yl.randomnum();
 6         int y4=yl.randomnum();
 7         String sym1=yl.symbol();
 8         String sym2=yl.symbol();
 9         String sym3=yl.symbol();
10         String zhongshi = "";        
11         int i = 0;
12         i = (int)(Math.random()*6)+1;
13         switch(i)
14         {
15                   
16              case 1:    
17                  zhongshi = "("+String.valueOf(y1)+sym1+String.valueOf(y2)+")"+sym2+String.valueOf(y3)+sym3+String.valueOf(y4);
18                  break;     
19              case 2:    
20                  zhongshi = "("+String.valueOf(y1)+sym1+String.valueOf(y2)+sym2+String.valueOf(y3)+")"+sym3+String.valueOf(y4);
21                  break;
22              case 3:    
23                  zhongshi = String.valueOf(y1)+sym1+"("+String.valueOf(y2)+sym2+String.valueOf(y3)+")"+sym3+String.valueOf(y4);
24                  break;
25              case 4:    
26                  zhongshi = String.valueOf(y1)+sym1+"("+String.valueOf(y2)+sym2+String.valueOf(y3)+sym3+String.valueOf(y4)+")";
27                  break;
28              case 5:     
29                  zhongshi = String.valueOf(y1)+sym1+String.valueOf(y2)+sym2+"("+String.valueOf(y3)+sym3+String.valueOf(y4)+")";
30                  break;
31              case 6:
32                  zhongshi = String.valueOf(y1)+sym1+String.valueOf(y2)+sym2+String.valueOf(y3)+sym3+String.valueOf(y4);
33           
34         }

count方法:

 1     public int count(String a, String b, String e) {  
 2         int temp1 = Integer.parseInt(a);  
 3         int temp2 = Integer.parseInt(b);  
 4         if ("+".equals(e)) {  
 5             return temp1 + temp2;  
 6         } else if ("-".equals(e)) {  
 7             return temp1 - temp2;  
 8         } else if ("*".equals(e)) {  
 9             return temp1 * temp2;  
10         } else {  
11             if(temp2==0){
12                 return chushu = 0;//除数为零的标志
13             }    
14             else
15                 return temp1 / temp2;
16         }  
17     } 

 主类实现:

 1 public static void main(String[] args) {
 2         // TODO Auto-generated method stub
 3         computer yl = new computer();
 4         Scanner sc = new Scanner(System.in);
 5         int total = sc.nextInt(); 
 6         int i = 1;//序号为1
 7         while(total!=0){
 8             String zhongshi = yl.anwser();
 9             yl.chushu=1;    //重置标志
10             String back =  yl.toback(zhongshi);
11             int result = yl.countback(back);    //计算后缀表达式结果
12             if(yl.chushu!=0){//接收标志位
13                 
14                 System.out.print("("+i+")"+zhongshi);
15                 i++;
16                 System.out.print("\t\t");
17                 System.out.println(result);
18                 total--;
19                 
20             }else{
21                 continue;
22             }
23             
24         }
25     }

运行结果:

 

posted @ 2016-11-15 20:58  YangXiaomoo  阅读(167)  评论(0编辑  收藏  举报