四则运算计数器

public class cQuestion {

    public static String str = "";//保存题目的字符串

    public static int num = 5;//每题中数的个数

    public static int num_i = 0;//题目中已有数的个数 

    public static int numberRange = 100;//运算中数的最大取值 

    public static int sum = 0;//记录结果

    public static void main(String[] args) {

         for(int i = 0; i < 50; i++) {

           GetQuestion();

           System.out.print(i+1);

           System.out.print(". " + str + " ");

           System.out.print(sum);

           System.out.print(" ");

           System.out.println(Arithmetic.arithmetic(str));//调用人家写好的一个类Arithmetic

        }
   }

   private static void GetQuestion() {

      str = "";

      sum = 0;

      num_i = num;//用前都清零

      quesGrow();

   }

   private static void quesGrow() {

   //
      if( num_i > 1 ) {

          int j = num_i;//记录这是第几层调用。

          num_i--;

          quesGrow();//递归

          int w=1+(int)(Math.random()*numberRange);//随机生成一个数

          int t=1+(int)(Math.random()*100);//向左生成,还是向右生成,类似于树。

          int f=1+(int)(Math.random()*100);//运算符控制

          if(t>50)//新数往右加

          {

              if(f>50) {

                 sum = sum + w;

                 str = str + "+" + String.valueOf( w );

              }

              else {

                 sum = sum - w;

                 str = str + "-" + String.valueOf( w );

             }

          }

          else//否则 新数往左加

          {

             if(f>50) {

                sum = w + sum;

                str = String.valueOf( w ) + "+" + str;

             } 

            else {

               if( j < 3 ) {//3——摸索出的数,不用给自己套上括号。实际上就是j=2

                  sum = w - sum;

                  str = String.valueOf( w ) + "-" + str;

               }

               else {

                 sum = w - sum;

                 str = String.valueOf( w ) + "-" + "(" +str+ ")";
                 //向左添减法的时候加括号,打破顺序计算模式。
               }
           }
        }
      }
      else if( num_i == 1 ) {

     //最后一层,也是输出的第一层

        int w=1+(int)(Math.random()*numberRange);

        sum = sum + w;

        str = str + String.valueOf( w );     

     }

   }

}

posted @ 2016-10-17 09:42  姜顾蓉  阅读(132)  评论(0)    收藏  举报