zoukankan      html  css  js  c++  java
  • 自动生成数学题型二(框架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 判断回答结果(判断结果代码在之后)

  • 相关阅读:
    Java8新特性3 Stream
    注解
    Base64编码
    代理
    Cglib
    快照
    Java安全模式
    Hibernet缓存详解
    中文文档
    JDK1.8时间日期函数
  • 原文地址:https://www.cnblogs.com/orchid9/p/6685485.html
Copyright © 2011-2022 走看看