zoukankan      html  css  js  c++  java
  • 四则运算 二

    设计思想:

    1、定义数组number1[] number2[]

    2、首先在ChooseAmount()函数中选择题目数量实现题目数的订制

    3、在ChooseMD()函数中选择是否有乘除法 其中定义变量mDChoose 若为1则有 若为2 则无

    4、在ChooseNumberRange()选择输出数值的范围

    5、在RandomNumber()函数中用随机赋值入数组

    6、在RandomNumberChange()函数中判断一些数学运算问题 比如除数不为0

    7、在RandomOperatorOne()RandomOperatorTwo()函数随机生成运算符

    8、在JudgeNegative()中判断是否有负数 即第一个数小于第二个

    9、在JudgeReminder()中判断是否有余数 用%判断

    10、在ShowEquation()中显示结果

    11、在JudgeRepeat()中判断是否重复 用双for循环将两个数组的值比较 当两个数组值相同时 重新赋值

    即a[i]==a[j]&&b[i]==b[j]

    (未实现 因为数组的赋值中出现问题 代码如下:

    import java.util.Scanner;
    public class Task21 {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Calculate e = new Calculate();
            e.ChooseAmount();
            e.RandomNumber();
            e.ShowEquation();
            
        }
    
    }
    class Calculate
    {
        int i;
        int tNumber;//题目数
        int   number1[] = new int [tNumber]; //第一个数
        int   number2[] = new int [tNumber]; //第二个数
         void ChooseAmount()//题目数量
         {
             System.out.println("Please input your title numbers");
             Scanner t = new Scanner(System.in);
              tNumber = t.nextInt();
         }
         void RandomNumber()//随机数赋值
         {
             for( i=0;i<tNumber;i++)
             {
                   number1[i] = (int)(Math.random()*100); 
                   number2[i] = (int)(Math.random()*100);
             }
    
         }
         void ShowEquation()//显示算式
         {
             for(i=0;i<tNumber;i++)
             {
                 System.out.println(number1[i] +" "+" "+ number2[i] +" =");
             }         
         }
    }

    出现问题:    当tNumber改换为具体的数字是可赋值 但通过变量来定义数组长度则无法成功赋值。

    12、加入括号功能未能实现。

    源代码:

      1 import java.util.Scanner;
      2 public class Task2 {
      3 
      4     public static void main(String[] args) {
      5         // TODO Auto-generated method stub
      6         Expression e = new Expression();
      7         e.ChooseAmount();
      8         e.ChooseMD();
      9         e.ChooseNumberRange();
     10         for(int i=0;i<e.tNumber;i++)
     11         {
     12             e.RandomNumber();
     13             
     14              if(e.mDChoose==1)
     15              {
     16                  
     17                  e.RandomOperatorOne();
     18              }
     19              else if(e.mDChoose==2)
     20              {
     21                  
     22                  e.RandomOperatorTwo();
     23              }
     24              
     25             e.RandomNumberChange();
     26             e.ShowEquation();
     27             
     28             if(e.operator == '-')
     29             {
     30                 e.JudgeNegative();
     31             }
     32             if(e.operator == '/')
     33             {
     34                 e.JudgeReminder();
     35             }
     36         }    
     37     }
     38 
     39 }
     40 class Expression//表达式类 存放表达式
     41 {
     42     
     43     int  number1 ; //第一个数
     44     int  number2 ; //第二个数
     45     char operator ;//运算符
     46     int tNumber;//题目数
     47     int mDChoose;//乘除选择
     48     int range;//数值范围
     49     int i,j;
     50     public Expression()
     51     {
     52         number1=number2=0;
     53         operator = '+';
     54     }
     55     
     56 
     57      void ChooseAmount()//题目数量
     58      {
     59          System.out.println("Please input your title numbers");
     60          Scanner t = new Scanner(System.in);
     61           tNumber = t.nextInt();
     62      }
     63      
     64      void JudgeRepeat()//判断重复
     65      {
     66          
     67      }
     68      
     69      void ChooseMD()//选择是否有乘除法
     70      {
     71          System.out.println("Please choose Multiply and Divide or not.    1 for Yes 2 for No");
     72          Scanner m = new Scanner(System.in);
     73           mDChoose = m.nextInt();
     74      }
     75      
     76      void ChooseNumberRange()//选择数值范围
     77      {
     78          System.out.println("Please input Number Range.   you just need to input the biggest number in the range");
     79          Scanner r = new Scanner(System.in);
     80          range = r.nextInt();
     81      }
     82      
     83      void RandomNumber()//随机数赋值
     84      {         
     85          number1 = (int)(Math.random()*range);
     86          number2 = (int)(Math.random()*range);         
     87      }
     88      
     89      void RandomNumberChange()//解决一些数学的算法问题
     90      {
     91          while(operator == '/'&&number2 == 0)
     92          {
     93              RandomNumber();
     94          }
     95      }
     96      void RandomOperatorOne()//运算符有乘除法
     97      {
     98          int operatorNum = (int)(Math.random()*100);
     99          for(i=0;i<tNumber;i++)
    100          {
    101              if(operatorNum%4 == 0)
    102              {
    103                  operator = '+';
    104              }
    105              else if(operatorNum%4 == 1)
    106              {
    107                  operator = '-';
    108              }
    109              else if(operatorNum%4 == 2)
    110              {
    111                  operator = '*';
    112              }
    113              else if(operatorNum%4 == 3)
    114              {
    115                  operator = '/';
    116              }
    117          }
    118 
    119      }
    120      
    121      void RandomOperatorTwo()//运算符无乘除法
    122      {
    123          int operatorNum = (int)(Math.random()*100);
    124          for(i=0;i<tNumber;i++)
    125          {
    126              if(operatorNum%2 == 0)
    127              {
    128                  operator = '+';
    129              }
    130              else if(operatorNum%2 == 1)
    131              {
    132                  operator = '-';
    133              }
    134          }
    135          
    136      }
    137      
    138      void JudgeNegative()//判断加减是否有负数
    139      {
    140         if(number1>number2)
    141             System.out.println("Hava negative number");
    142      }
    143      
    144      void JudgeReminder()//判断除是否有余数
    145      {
    146          if(number1%number2 == 0)
    147          {
    148                 System.out.println("Not hava reminder");
    149          }
    150          
    151          else if(number1%number2 != 0)
    152          {
    153           System.out.println("hava reminder");
    154          }
    155 
    156      }
    157      
    158      void ShowEquation()//显示算式
    159      {
    160 
    161          System.out.println(number1 +" "+ operator+" "+ number2 +" =");
    162      }
    163 
    164 }

    运行结果截图:

     时间记录日志:

    日期 开始时间 结束时间 中断时间 净时间 活动 备注 c u
    3.14 8:00 9.50 10 100 上课 课间休息    
      4:00 5:00   60 阅读      
    3.16 9:00 10:00   60 阅读      
    3.17 7:30 9:30 30 90 编程 休息 查资料    
    3.19 1:30 3:30 20 120 编程 查资料    
      4:30 6:00 10 80 编程      
                     
                     

    缺陷记录日志:

    日期 编号 引入阶段 排除阶段 修复时间 修复缺陷
    3.17 1 编码 编译 1min  
    描述:类的继承有误
      2 编码 编码 1min  
    描述:输入的忘记
      3 编码 编译 未知  

                             描述:数组的长度赋值 还未解决。

    项目计划总结:

    任务

    日期

    听课 编程 阅读课本   日总计
    周一3.14 100   60   160
    3.16     60   60
    3.17   90     90
    3.19   200     200
               
               
               
    周总计 100 290 120    

    阶段时间和效率

    总计 510        
    平均 72.8        
    最大 200        
    最小 60        
  • 相关阅读:
    BitTorrent Sync 基于BT的文件同步
    转载:安装Ubuntu 15.10后要做的事
    VMware 虚拟机安装OSX el capitan 11.12
    GitStack 第三方开源服务器端
    一些不错的设计网站
    Spark注册UDF函数,用于DataFrame DSL or SQL
    R和Tableau平行坐标图
    Scala断言
    Spark Gradient-boosted trees (GBTs)梯度提升树
    Spark Multilayer perceptron classifier (MLPC)多层感知器分类器
  • 原文地址:https://www.cnblogs.com/hzxsg0919/p/5295944.html
Copyright © 2011-2022 走看看