第九周(11.11-11.17)----結對專案----實現任意數量題目、解決除數為零問題

YangXiaomoo發表於2016-11-15

  需求功能裡是能夠出任意個題目,我選擇根據使用者輸入的數目進行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     }

執行結果:

 

相關文章