將題目分成兩個部分一個是操作符,一個是運算元。每個題目的組成是這樣的:數 符 數 符 數。這裡的每個運算元可能是整數,可能是分數,而分數中的分子或分母可能帶有乘法計算。所以為了體現後來的分數計算,我將這裡的操作符限制在{+,-}。
fuhao類
public String rfuhao() | 返回一個操作符 |
public String num() | 返回一個數或者一個乘法算式 |
public String xiang() | 返回一個數或者一個分數 |
rfuhao():利用隨機數選擇String的下標,實現隨機返回"+"或者"-"
1 public String rfuhao(){ 2 String[] fuhao = {"+","-"}; 3 return fuhao[(int)(Math.random()*2)]; 4 }
num():通過隨機數將出乘法算式的機率降低
public String num(){ String danxiang = ""; String num1 = (int)(1+Math.random()*9)+""; String num2 = (int)(1+Math.random()*9)+""; int i = (int)(Math.random()*10);//要麼出數要麼出算式 if(i==0){ return danxiang = num1+"*"+num2; }else return num1; }
xiang():"/"前面或者後面可能是數,也可能是乘法算式
1 public String xiang(){ 2 int i = (int)(Math.random()*2); 3 fuhao fu = new fuhao(); 4 switch(i){ 5 case 0: 6 return fu.num(); 7 case 1: 8 return fu.num()+"/"+fu.num(); 9 default : 10 return null; 11 } 12 }
main:
1 public static void main(String[] args) { 2 // TODO Auto-generated method stub 3 fuhao rf = new fuhao(); 4 int i=50; 5 while(i!=0){ 6 System.out.print("("+(51-i)+")"); 7 System.out.println(rf.xiang()+rf.rfuhao()+rf.xiang()+rf.rfuhao()+rf.xiang()); 8 9 i--; 10 } 11 }
結果: