设计思想:
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 |