1 //20150324 練習1 2 import java.util.*; 3 public class exercise { 4 static int a,b; 5 static char[]ch={'+','-','*','/'}; 6 static Scanner in=new Scanner(System.in); 7 static int number,right=0; 8 static double answer; 9 static int total=0; 10 11 public static void main(String[] args) 12 { 13 System.out.println("數學四則運算題目 \t注意例子:(3/4)為真分數四分之三\n測試開始\n \n列印題目數量:"); 14 number=in.nextInt();//出題數目 15 for(int i=0;i<number;i++) 16 { int n = new Random().nextInt(5);//獲取運算的方式0—— + 1—— - 2—— * 3—— / 17 if(n==0 || n==2 || n==3 || n==1)//int型的運算 18 { 19 a = new Random().nextInt(100); 20 b =new Random().nextInt(100)+1;//獲取式子的運算隨機數 21 System.out.print(a+""+ch[n]+""+b+"=");//輸出式子 22 23 answer=in.nextDouble();//獲取答案處理使用者輸入 24 //判斷答案是否正確的方法 25 judge(n);//判斷是否正確 26 } 27 else if(n==4)//含有真分數的運算 28 { 29 int c = 0; 30 int d=0; 31 int e=0; 32 int f=0; 33 int fm=0; 34 int fz=0;//答案的分子分母 35 boolean t = true; 36 while(t==true)//判斷並輸出真分數 37 { 38 c = new Random().nextInt(10); 39 d =new Random().nextInt(10);//獲取式子的運算隨機數 40 if(c<d) 41 t=false; 42 43 } 44 45 t=true; 46 while(t==true)//判斷並輸出真分數 47 { 48 e =new Random().nextInt(10); 49 f =new Random().nextInt(10);//獲取式子的運算隨機數 50 if(e<f) 51 t=false; 52 53 } 54 n=new Random().nextInt(4); 55 System.out.print("("+c+"/"+d+")"+ch[n]+"("+e+"/"+f+")"+"="); 56 answer=in.nextInt(); 57 //真分數運算的判斷 58 if(n==0)//加法 59 { 60 fm=d*f; 61 fz=(c*f)+(e*d); 62 if(answer==(fz/fm)) 63 { 64 System.out.printf("答對了!!\n"); 65 right=right+1; 66 } 67 else 68 System.out.println("答錯了!!答案是"+(fz/fm)); 69 } 70 else if(n==1)//減法 71 { 72 fm=d*f; 73 fz=(c*f)-(e*d); 74 if(answer==(fz/fm)) 75 { 76 System.out.printf("答對了!!\n"); 77 right=right+1; 78 } 79 else 80 System.out.println("答錯了!!答案是"+(fz/fm)); 81 } 82 else if(n==2)//乘法 83 { 84 fz=c*e; 85 fm=d*f; 86 if(answer==fz*fm) 87 { 88 System.out.printf("答對了!!\n"); 89 right=right+1; 90 } 91 else 92 System.out.println("答錯了!!答案是"+(fz*fm)); 93 } 94 else if(n==3)//除法 95 { 96 fz=c*f; 97 fm=d*e; 98 int ans=(int)(fz/fm); 99 if(answer==ans) 100 { 101 System.out.printf("答對了!!\n"); 102 right=right+1; 103 } 104 else 105 System.out.println("答錯了!!答案是"+(fz/fm)); 106 } 107 108 109 } 110 111 } 112 //打分統計 113 System.out.print("總共"+number+"題"+"\t答對了"+right+"題\n"); 114 System.out.print("你的分數是:\t"); 115 if(right==number) 116 System.out.print("100分"); 117 else 118 System.out.print((total=right*(100/number))+"分"); 119 120 } 121 static void judge(int n)//判斷對錯 122 { 123 124 if(n==0) 125 { 126 if(answer==a+b) 127 { 128 System.out.printf("答對了!!\n"); 129 right=right+1; 130 } 131 else 132 System.out.println("答錯了!!答案是"+(a+b)); 133 } 134 else if(n==1) 135 { 136 if(answer==a-b) 137 { 138 System.out.printf("答對了!!\n"); 139 right=right+1; 140 } 141 else 142 System.out.println("答錯了!!答案是"+(a-b)); 143 } 144 else if(n==2) 145 { 146 if(answer==a*b) 147 { 148 System.out.printf("答對了!!\n"); 149 right=right+1; 150 } 151 else 152 System.out.println("答錯了!!答案是"+(a*b)); 153 } 154 else if(n==3) 155 { 156 int ans=(int)(a/b); 157 if(answer==ans) 158 { 159 System.out.printf("答對了!!\n"); 160 right=right+1; 161 } 162 else 163 System.out.println("答錯了!!答案是"+(a/b)); 164 } 165 } 166 }
執行情況:1.執行後臺。如圖:
2.判斷對錯。如圖:
3.記分情況。每題分值會因為提數不同而不同,總分是100.如圖
待改進的情況,問題:
1.除法運算只能將結果為整型;如15/16= 如果答案是0就正確,應該為0.93才對,除法結果處理不合理,而且也只侷限整型中的運算;
2.針對含有真分數的運算,暫時只能讓使用者輸入最終的答案,如果輸入真分數答案會出錯。如圖