zoukankan      html  css  js  c++  java
  • 续.第一次冲刺之后.

    第一次冲刺:

           每个员可以各自完成自己的分配好的模块

      罗伟业:加减算术----乘除算式   返回一个完整正确(加减、乘除)的算式<考虑到低年级还没有完全掌握四则混合运算>

      康取:四则混合运算算式  返回一个完整正确的混合四种运算的算式 <含分数>

      陈键:四则混合+括号混合  返回一个完整正确的混合四种运算的算式  <含分数>

    现在也基本达到了目标 .

    基本能够达到预想效果< UI - 。-不堪入目 有待提高.>

    在完成过程中想到了

    ----存储 一些默认设置 比如模式和难度的选择等等的数据
    -----增加一个对题 错题的 比较.分数显示.
    -----设置输入内容只能是数值 。不能是分数,保留三位小数.<规划输入格式>

      1 package com.example.testc;
      2 import java.math.BigDecimal;
      3 import java.util.Random;
      4 import android.app.Activity;
      5 import android.os.Bundle;
      6 import android.view.View;
      7 public class MainActivity extends Activity {
      8     private Calculator calculator = new Calculator();
      9     private Double intemp ;    
     10     @Override
     11     protected void onCreate(Bundle savedInstanceState) {
     12         super.onCreate(savedInstanceState);
     13         setContentView(R.layout.activity_main);
     14     }
     15     public void onclick(View v) {
     16         switch (v.getId()) {
     17         case R.id.createone:
     18             String a = createOperation();
     19             calculator.setExpression(a);     
     20             adjustResult( calculator.getResult() ,"1");
     21             System.out.println(a + "===" +intemp+ "====" + calculator.getResult());
     22             break;
     23         }
     24     }
     25 
     26     /** 比较答案的对错,精度为0.001 **/
     27     public boolean adjustResult(String CorrectResult, String userResult) {
     28         BigDecimal correctAnswer = new BigDecimal(CorrectResult);
     29         BigDecimal userAnswer = new BigDecimal(userResult);
     30         double cAnswer;  
     31         double uAnswer;         
     32         
     33           cAnswer = correctAnswer.doubleValue();
     34           uAnswer = userAnswer.doubleValue();
     35           int ax = (int) Math.round(cAnswer * 1000) ;
     36             cAnswer = ax /1000.0;
     37             intemp=cAnswer;
     38             if (Math.abs(cAnswer - uAnswer) < 0.001 )
     39                 return true;
     40         return false;
     41     }
     42 
     43     public String createOperation() {
     44         Random seed = new Random();
     45         final String ADD = "+" + "";
     46         final String MINUS = "-" + "";
     47         final String MULTIPLY = "x" + "";
     48         final String DEVIDE = "/" + "";
     49 
     50         // 操作数的个数.而且最多为五个,默认三个操作数
     51         int number = 3;
     52         String datas[] = new String[5];
     53         String op[] = new String[5];
     54 
     55         /** 生成 操作数个数 **/
     56         int numberSeeder = seed.nextInt(4) + 1;
     57 
     58         if (numberSeeder == 1)
     59             number = 3;
     60         else if (numberSeeder == 2 || numberSeeder == 4)
     61             number = 4;
     62         else if (numberSeeder == 3)
     63             number = 5;
     64 
     65         /** 生成 操作数 跟 符号 **/
     66         for (int i = 0; i < number; i++) {
     67             int jud = seed.nextInt(100);
     68             if (jud < 20) {
     69                 datas[i] = fraction();
     70             } else if (jud < 100) {
     71                 datas[i] = integerCreater();
     72             }
     73             if (i<number-1) {
     74                 /** 操作数的个数都是比符号的个数多一个 **/
     75                 int judp= seed.nextInt(4) + 1;
     76                 if (judp == 1)
     77                     op[i] = ADD;
     78                 else if (judp == 2)
     79                     op[i] = MINUS;
     80                 else if (judp == 3)
     81                     op[i] = MULTIPLY;
     82                 else if (judp== 4)
     83                     op[i] = DEVIDE;
     84             }
     85         }
     86         return createBrackets(datas, op, number);
     87     }
     88     /** create an integer **/
     89     public String integerCreater() {
     90         Random seed = new Random();
     91         String data;
     92         data = String.valueOf(seed.nextInt(300) + 1);
     93         return data;
     94     }
     95     /** create a fraction **/
     96     public String fraction() {
     97         final String DEVIDE = "/" + "";
     98         final String leftear = "(" + "";
     99         final String rightear = ")" + "";
    100         int First = 1, second = 1;
    101         Random seeder = new Random();
    102         First = seeder.nextInt(20) + 1;// 分子
    103         second = seeder.nextInt(20) + 1;// 分母
    104         return leftear + First + DEVIDE + second + rightear;
    105     }
    106 
    107     /** brackets block 操作数据数组 、 操作符 、 个数 **/
    108     public String createBrackets(String datas[], String operator[], int number) {
    109         final String leftear = "(" + "";
    110         final String rightear = ")" + "";
    111         Random seeder = new Random();
    112         String bracketOperation = null;
    113         switch (number) {
    114         case 3:
    115             if (seeder.nextInt() / 2 == 0)
    116                 bracketOperation = leftear + datas[0] + operator[0] + datas[1]
    117                         + rightear + operator[1] + datas[2];
    118             else
    119                 bracketOperation = datas[0] + operator[0] + leftear + datas[1]
    120                         + operator[1] + datas[2] + rightear;
    121             break;
    122         case 4:
    123             int temp = seeder.nextInt(21) + 1;
    124             temp = temp % 7 + 1;
    125             switch (temp) {
    126             case 1:// (a+b)x(a+b)
    127                 bracketOperation = leftear + datas[0] + operator[0] + datas[1]
    128                         + rightear + operator[1] + leftear + datas[2]
    129                         + operator[2] + datas[3] + rightear;
    130                 break;
    131             case 2:// ((a+b)+b)+b
    132                 bracketOperation = leftear + leftear + datas[0] + operator[0]
    133                         + datas[1] + rightear + operator[1] + datas[2]
    134                         + rightear + operator[2] + datas[3];
    135                 break;
    136             case 3:// (a+(a+b))+b
    137                 bracketOperation = leftear + datas[0] + operator[0] + leftear
    138                         + datas[1] + operator[1] + datas[2] + rightear
    139                         + rightear + operator[2] + datas[3];
    140                 break;
    141             case 4:// (a+b)+a+b
    142                 bracketOperation = leftear + datas[0] + operator[0] + datas[1]
    143                         + rightear + operator[1] + datas[2] + operator[2]
    144                         + datas[3];
    145                 break;
    146             case 5:// a+b+(a+b)
    147                 bracketOperation = datas[0] + operator[0] + datas[1]
    148                         + operator[1] + leftear + datas[2] + operator[2]
    149                         + datas[3] + rightear;
    150                 break;
    151             case 6:// a+(a+b)+b
    152                 bracketOperation = datas[0] + operator[0] + leftear + datas[1]
    153                         + operator[1] + datas[2] + rightear + operator[2]
    154                         + datas[3];
    155                 break;
    156             case 7:// (a+b+c)+a
    157                 bracketOperation = leftear + datas[0] + operator[0] + datas[1]
    158                         + operator[1] + datas[2] + rightear + operator[2]
    159                         + datas[3];
    160                 break;
    161             }
    162             break;
    163         case 5:
    164             int dicision = seeder.nextInt(33) + 1;
    165             dicision = dicision % 9 + 1;
    166             switch (dicision) {
    167             case 1:// (a+(a+b))+a+b
    168                 bracketOperation = leftear + datas[0] + operator[0] + leftear
    169                         + datas[1] + operator[1] + datas[2] + rightear
    170                         + rightear + operator[2] + datas[3] + operator[3]
    171                         + datas[4];
    172                 break;
    173             case 2:// ((a+b)+a)+a+a
    174                 bracketOperation = leftear + leftear + datas[0] + operator[0]
    175                         + datas[1] + rightear + operator[1] + datas[2]
    176                         + rightear + operator[2] + datas[3] + operator[3]
    177                         + datas[4];
    178                 break;
    179             case 3:// (a+b)x(a+b)+a
    180                 bracketOperation = leftear + datas[0] + operator[0] + datas[1]
    181                         + rightear + operator[1] + leftear + datas[2]
    182                         + operator[2] + datas[3] + rightear + operator[3]
    183                         + datas[4];
    184                 break;
    185             case 4:// (a+b)x(a+b+a)
    186                 bracketOperation = leftear + datas[0] + operator[0] + datas[1]
    187                         + rightear + operator[1] + leftear + datas[2]
    188                         + operator[2] + datas[3] + operator[3] + datas[4]
    189                         + rightear;
    190                 break;
    191             case 5:// (a+b)x(a+b+c)
    192                 bracketOperation = leftear + datas[0] + operator[0] + datas[1]
    193                         + rightear + operator[1] + leftear + datas[2]
    194                         + operator[2] + datas[3] + operator[3] + datas[4]
    195                         + rightear;
    196                 break;
    197             case 6:// (a+b)+a+(a+b)
    198                 bracketOperation = leftear + datas[0] + operator[0] + datas[1]
    199                         + rightear + operator[1] + datas[2] + operator[2]
    200                         + leftear + datas[3] + operator[3] + datas[4]
    201                         + rightear;
    202                 break;
    203             case 7:// ((a+b)+a)X(a+b)
    204                 bracketOperation = leftear + leftear + datas[0] + operator[0]
    205                         + datas[1] + rightear + operator[1] + datas[2]
    206                         + rightear + operator[2] + leftear + datas[3]
    207                         + operator[3] + datas[4] + rightear;
    208                 break;
    209             case 8:// (((a+b)+c)+d)+e
    210                 bracketOperation = leftear + leftear + leftear + datas[0]
    211                         + operator[0] + datas[1] + rightear + operator[1]
    212                         + datas[2] + rightear + operator[2] + datas[3]
    213                         + rightear + operator[3] + datas[4];
    214                 break;
    215             case 9:// a+(a+b+c)+e
    216                 bracketOperation = datas[0] + operator[0] + leftear + datas[1]
    217                         + operator[1] + datas[2] + operator[2] + datas[3]
    218                         + rightear + operator[3] + datas[4];
    219                 break;
    220             }
    221             break;
    222         }
    223         return bracketOperation;
    224     }
    225 
    226 }
    CreateExercises
  • 相关阅读:
    PSE Access Service
    The JXTA Migration
    JXSE 2.5 : What's Cool #6 PeerGroup Executor and ScheduledExcutor
    JXTA Kitchen
    LookupListener中的resultChanged方法是在EDT中执行么?
    同一台机器启动两个结点时的端口冲突问题
    (转)OpenSSL中对称加密算法的统一接口
    关于“未能加载文件或程序集“System.Core, Version=3.5.0.0
    暗香浮动的夜晚
    java xml序列化与反序列化
  • 原文地址:https://www.cnblogs.com/be-the-one/p/4998688.html
Copyright © 2011-2022 走看看