自动生成数学题型二(框架struts2)题型如((a+b)*c=d)
1. 生成题目
1.1 生成单个题目
1 public static String[] twoOperatorAndOperator(int num1, int num2) { 2 double first = generate(num1, num2); 3 double secound = generate(num1, num2); 4 double third = generate(num1, num2); 5 System.out.println(num1+" num1"); 6 System.out.println(num2+" num2"); 7 int zero = 0; 8 zero=generate(1, 28); 9 System.out.println(zero + " zero"); 10 switch (zero) { 11 case 1: 12 double result = first + secound + third; 13 String[] addAndAdd = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 14 String.format("%.0f", third), String.format("%.0f", result), String.valueOf(1), "+", "+", null, 15 null, null, null }; 16 return addAndAdd; 17 case 2: 18 if (first + secound >= third) { 19 double result2 = first + secound - third; 20 String[] addAndSub = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 21 String.format("%.0f", third), String.format("%.0f", result2), String.valueOf(2), "+", "-", null, 22 null, null, null }; 23 return addAndSub; 24 } else { 25 double result2 = third + secound - first; 26 String[] addAndSub = new String[] { String.format("%.0f", third), String.format("%.0f", secound), 27 String.format("%.0f", first), String.format("%.0f", result2), String.valueOf(2), "+", "-", null, 28 null, null, null }; 29 return addAndSub; 30 } 31 case 3: 32 double result3 = first + secound * third; 33 String[] addAndMul = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 34 String.format("%.0f", third), String.format("%.0f", result3), String.valueOf(3), "+", "*", null, 35 null, null, null }; 36 return addAndMul; 37 case 4: 38 if (third != 0) { 39 double result4 = first + secound / third; 40 String[] addAndDiv = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 41 String.format("%.0f", third), String.format("%.2f", result4), String.valueOf(4), "+", "/", null, 42 null, null, null }; 43 return addAndDiv; 44 } else { 45 twoOperatorAndOperator(num1, num2); 46 } 47 case 5: 48 if (first - secound + third >= 0) { 49 double result5 = first - secound + third; 50 String[] SubAndAdd = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 51 String.format("%.0f", third), String.format("%.0f", result5), String.valueOf(5), "-", "+", null, 52 null, null, null }; 53 return SubAndAdd; 54 } else { 55 double result5 = secound - first - third; 56 String[] SubAndAdd = new String[] { String.format("%.0f", secound), String.format("%.0f", first), 57 String.format("%.0f", third), String.format("%.0f", result5), String.valueOf(5), "-", "-", null, 58 null, null, null }; 59 return SubAndAdd; 60 } 61 case 6: 62 if (first - secound - third >= 0) { 63 double result6 = first - secound - third; 64 String[] SubAndSub = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 65 String.format("%.0f", third), String.format("%.0f", result6), String.valueOf(6), "-", "-", null, 66 null, null, null }; 67 return SubAndSub; 68 } else { 69 double result6 = third + secound - first; 70 String[] SubAndSub = new String[] { String.format("%.0f", third), String.format("%.0f", secound), 71 String.format("%.0f", first), String.format("%.0f", result6), String.valueOf(6), "+", "-", null, 72 null, null, null }; 73 return SubAndSub; 74 } 75 case 7: 76 if (first - secound * third > 0) { 77 double result7 = first - secound * third; 78 String[] SubAndMul = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 79 String.format("%.0f", third), String.format("%.0f", result7), String.valueOf(7), "-", "*", null, 80 null, null, null }; 81 return SubAndMul; 82 } else { 83 double result7 = third * secound - first; 84 String[] SubAndMul = new String[] { String.format("%.0f", third), String.format("%.0f", secound), 85 String.format("%.0f", first), String.format("%.0f", result7), String.valueOf(7), "*", "-", null, 86 null, null, null }; 87 return SubAndMul; 88 } 89 90 case 8: 91 if (third != 0) { 92 if (first - secound / third > 0) { 93 double result8 = first - secound / third; 94 String[] SubAndDiv = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 95 String.format("%.0f", third), String.format("%.2f", result8), String.valueOf(8), "-", "/", 96 null, null, null, null }; 97 return SubAndDiv; 98 } else { 99 double result8 = secound / third - first; 100 String[] SubAndDiv = new String[] { String.format("%.0f", secound), String.format("%.0f", third), 101 String.format("%.0f", first), String.format("%.2f", result8), String.valueOf(8), "/", "-", 102 null, null, null, null }; 103 return SubAndDiv; 104 } 105 } else { 106 twoOperatorAndOperator(num1, num2); 107 } 108 case 9: 109 double result9 = first * secound + third; 110 String[] MulAndAdd = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 111 String.format("%.0f", third), String.format("%.0f", result9), String.valueOf(9), "*", "+", null, 112 null, null, null }; 113 return MulAndAdd; 114 case 10: 115 if (first * secound - third > 0) { 116 double result10 = first * secound - third; 117 String[] MulAndSub = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 118 String.format("%.0f", third), String.format("%.0f", result10), String.valueOf(10), "*", "-", 119 null, null, null, null }; 120 return MulAndSub; 121 } else { 122 double result10 = third - first * secound; 123 String[] MulAndSub = new String[] { String.format("%.0f", third), String.format("%.0f", first), 124 String.format("%.0f", secound), String.format("%.0f", result10), String.valueOf(10), "-", "*", 125 null, null, null, null }; 126 return MulAndSub; 127 } 128 129 case 11: 130 double result11 = first * secound * third; 131 String[] MulAndMul = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 132 String.format("%.0f", third), String.format("%.0f", result11), String.valueOf(11), "*", "*", null, 133 null, null, null }; 134 return MulAndMul; 135 case 12: 136 if (third != 0) { 137 double result12 = first * secound / third; 138 String[] MulAndDiv = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 139 String.format("%.0f", third), String.format("%.2f", result12), String.valueOf(12), "*", "/", 140 null, null, null, null }; 141 return MulAndDiv; 142 } else { 143 twoOperatorAndOperator(num1, num2); 144 } 145 case 13: 146 if (secound != 0) { 147 double result13 = first / secound + third; 148 String[] DivAndAdd = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 149 String.format("%.0f", third), String.format("%.2f", result13), String.valueOf(13), "/", "+", 150 null, null, null, null }; 151 return DivAndAdd; 152 } else { 153 twoOperatorAndOperator(num1, num2); 154 } 155 case 14: 156 if (secound > 0) { 157 if (first / secound - third > 0) { 158 double result14 = first / secound - third; 159 String[] DivAndSub = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 160 String.format("%.0f", third), String.format("%.2f", result14), String.valueOf(14), "/", "-", 161 null, null, null, null }; 162 return DivAndSub; 163 } else { 164 double result14 = third - first / secound; 165 String[] DivAndSub = new String[] { String.format("%.0f", third), String.format("%.0f", first), 166 String.format("%.0f", secound), String.format("%.2f", result14), String.valueOf(14), "-", 167 "/", null, null, null, null }; 168 return DivAndSub; 169 } 170 } else { 171 twoOperatorAndOperator(num1, num2); 172 } 173 case 15: 174 if (secound != 0) { 175 double result15 = first / secound * third; 176 String[] DivAndMul = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 177 String.format("%.0f", third), String.format("%.2f", result15), String.valueOf(15), "/", "*", 178 null, null, null, null }; 179 return DivAndMul; 180 } else { 181 twoOperatorAndOperator(num1, num2); 182 } 183 case 16: 184 if (secound != 0 && third != 0) { 185 double result16 = first / secound / third; 186 String[] DivAndDiv = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 187 String.format("%.0f", third), String.format("%.2f", result16), String.valueOf(16), "/", "/", 188 null, null, null, null }; 189 return DivAndDiv; 190 } else { 191 twoOperatorAndOperator(num1, num2); 192 } 193 case 17: 194 double result17 = (first + secound) * third; 195 String[] AddAndMul2 = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 196 String.format("%.0f", third), String.format("%.0f", result17), String.valueOf(17), "+", "*", "(", 197 null, ")", null }; 198 return AddAndMul2; 199 case 18: 200 if (third != 0) { 201 double result18 = (first + secound) / third; 202 String[] AddAndDiv2 = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 203 String.format("%.0f", third), String.format("%.2f", result18), String.valueOf(18), "+", "/", 204 "(", null, ")", null }; 205 return AddAndDiv2; 206 } else { 207 twoOperatorAndOperator(num1, num2); 208 } 209 case 19: 210 if (first > secound) { 211 double result19 = (first - secound) * third; 212 String[] SubAndMul2 = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 213 String.format("%.0f", third), String.format("%.0f", result19), String.valueOf(19), "-", "*", 214 "(", null, ")", null }; 215 return SubAndMul2; 216 } else { 217 double result19 = (secound - first) * third; 218 String[] SubAndMul2 = new String[] { String.format("%.0f", secound), String.format("%.0f", first), 219 String.format("%.0f", third), String.format("%.0f", result19), String.valueOf(19), "-", "*", 220 "(", null, ")", null }; 221 return SubAndMul2; 222 } 223 case 20: 224 if (third != 0) { 225 double result20 = (first + secound) / third; 226 String[] SubAndDiv2 = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 227 String.format("%.0f", third), String.format("%.2f", result20), String.valueOf(20), "+", "/", 228 "(", null, ")", null }; 229 return SubAndDiv2; 230 } else { 231 twoOperatorAndOperator(num1, num2); 232 } 233 case 21: 234 double result21 = first * (secound + third); 235 String[] MulAndAdd2 = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 236 String.format("%.0f", third), String.format("%.0f", result21), String.valueOf(21), "*", "+", null, 237 "(", null, ")" }; 238 return MulAndAdd2; 239 case 22: 240 if (secound > third) { 241 double result22 = first * (secound - third); 242 String[] MulAndSub2 = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 243 String.format("%.0f", third), String.format("%.2f", result22), String.valueOf(22), "*", "-", 244 null, "(", null, ")" }; 245 return MulAndSub2; 246 } else { 247 double result22 = first * (third - secound); 248 String[] MulAndSub2 = new String[] { String.format("%.0f", first), String.format("%.0f", third), 249 String.format("%.0f", secound), String.format("%.2f", result22), String.valueOf(22), "*", "-", 250 null, "(", null, ")" }; 251 return MulAndSub2; 252 } 253 case 23: 254 if ((secound + third) != 0) { 255 double result23 = first / (secound + third); 256 String[] DivAndAdd2 = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 257 String.format("%.0f", third), String.format("%.2f", result23), String.valueOf(23), "/", "+", 258 null, "(", null, ")" }; 259 return DivAndAdd2; 260 } else { 261 twoOperatorAndOperator(num1, num2); 262 } 263 case 24: 264 if (secound > third) { 265 double result24 = first / (secound - third); 266 String[] DivAndSub2 = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 267 String.format("%.0f", third), String.format("%.2f", result24), String.valueOf(24), "/", "-", 268 null, "(", null, ")" }; 269 return DivAndSub2; 270 } else if (secound < third) { 271 double result24 = first / (third - secound); 272 String[] DivAndSub2 = new String[] { String.format("%.0f", first), String.format("%.0f", third), 273 String.format("%.0f", secound), String.format("%.2f", result24), String.valueOf(24), "/", "-", 274 null, "(", null, ")" }; 275 return DivAndSub2; 276 } else { 277 twoOperatorAndOperator(num1, num2); 278 } 279 case 25: 280 double result25 = first * (secound * third); 281 String[] MulAndMul2 = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 282 String.format("%.0f", third), String.format("%.0f", result25), String.valueOf(25), "*", "*", null, 283 "(", null, ")" }; 284 return MulAndMul2; 285 286 case 26: 287 if (third != 0) { 288 double result26 = first * (secound / third); 289 String[] MulAndDiv2 = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 290 String.format("%.0f", third), String.format("%.2f", result26), String.valueOf(26), "*", "/", 291 null, "(", null, ")" }; 292 return MulAndDiv2; 293 } else { 294 twoOperatorAndOperator(num1, num2); 295 } 296 297 case 27: 298 if (secound*third != 0) { 299 double result27 = first / (secound * third); 300 String[] DivAndMul2 = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 301 String.format("%.0f", third), String.format("%.2f", result27), String.valueOf(27), "/", "*", 302 null, "(", null, ")" }; 303 return DivAndMul2; 304 } else { 305 twoOperatorAndOperator(num1, num2); 306 } 307 case 28: 308 if(secound / third!=0&& third!=0){ 309 double result28 = first / (secound / third); 310 String[] DivAndDiv2 = new String[] { String.format("%.0f", first), String.format("%.0f", secound), 311 String.format("%.0f", third), String.format("%.2f", result28), String.valueOf(28), "/", "/", 312 null, "(", null, ")" }; 313 return DivAndDiv2; 314 }else { 315 twoOperatorAndOperator(num1, num2); 316 } 317 default: 318 break; 319 } 320 return null; 321 322 }
1.2 生成指定数目和范围的题目
1 /** 2 * twoOperator2() 方法,处理参数,并形成新的list集合的对象放入到session中,网页遍历可直接获取 3 * 4 * @param exerciseNumber 5 * 生成题目数量 6 * @param num1 7 * 定义起始范围 num1 8 * @param num2 9 * 定义起始范围 num2 10 * @return 返回list集合exerciseTwoOperators 11 */ 12 13 public static List<TwoOperators> twoOperator2(int exerciseNumber, int num1, int num2) { 14 15 List<TwoOperators> exerciseTwoOperators = new ArrayList<TwoOperators>(); 16 TwoOperators twoOperator = null; 17 for (int i = 0; i < exerciseNumber; i++) { 18 String[] twoOperatorAndOperator = twoOperatorAndOperator(num1, num2); 19 try { 20 twoOperator = new TwoOperators(twoOperatorAndOperator[0], twoOperatorAndOperator[1], 21 twoOperatorAndOperator[2], twoOperatorAndOperator[3], twoOperatorAndOperator[5], 22 twoOperatorAndOperator[6], twoOperatorAndOperator[7], twoOperatorAndOperator[8], 23 twoOperatorAndOperator[9], twoOperatorAndOperator[10]); 24 exerciseTwoOperators.add(twoOperator); 25 } catch (Exception e) { 26 e.printStackTrace(); 27 } 28 } 29 return exerciseTwoOperators; 30 31 }
1.3 action类中的代码
1 public class ThirdGrade { 2 private int min; 3 private int max; 4 private int exerciseNumber; 5 public int getMin() { 6 return min; 7 } 8 public void setMin(int min) { 9 this.min = min; 10 } 11 public int getMax() { 12 return max; 13 } 14 public void setMax(int max) { 15 this.max = max; 16 } 17 public int getExerciseNumber() { 18 return exerciseNumber; 19 } 20 public void setExerciseNumber(int exerciseNumber) { 21 this.exerciseNumber = exerciseNumber; 22 } 23 24 public String execute(){ 25 26 ActionContext actioncontext = ActionContext.getContext(); 27 Map<String, Object> session = actioncontext.getSession(); 28 count2 cou2=new count2(); 29 @SuppressWarnings("static-access") 30 List<TwoOperators> twoOperators=cou2.twoOperator2(exerciseNumber, min, max); 31 System.out.println("twoOperators = "+twoOperators); 32 session.put("twoOperators", twoOperators); 33 return "thirdGradeSuccess"; 34 } 35 36 }
2 .运行结果截图
2.1 初始界面
2.2 用户填写
2.3 回答问题页面
2.4 回答问题
2.5 判断回答结果(判断结果代码在之后)
作者:张九星
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。