第九周(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 }
运行结果: