四则运算 二

设计思想:

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        
原文地址:https://www.cnblogs.com/hzxsg0919/p/5295944.html