软件工程个人作业02
程序的设计思想:
1.在作业01的基础上通过输入a,确定题目个数,一个题目中数字有
n,n>1,n<10,产生的随机数有n,产生的符号有n-1;
2.在作业01的基础上通过输入b,确定数值范围;
3.在作业01的基础上构建checknum类,来实现化简和查看除法有无
余数;
4.可以控制下列参数:
4.1是否有乘除法:有,符号的随机数在0-1之间,无,符号的随机数在0-3之间;
4.2是否有括号(最多可以支持十个数参与计算):有,通过确定运算符号的位置来添加括号;
4.3加减有无负数:有,通过随机数0、1来控制数的正负;
5.用矩阵来记录题目中的数字和符号,就行验重(目前没有实现)
源程序代码:
package math; import java.util.Random; import java.util.Scanner; public class math{ public static void main(String[] args) { // TODO Auto-generated method Scanner in=new Scanner(System.in); String output=""; System.out.println("请输入题目个数:"); //输入提示 int num = in.nextInt(); //输入题目个数 System.out.println("请输入取值范围:(小于100)"); //输入提示 int rnum = in.nextInt(); //输入取值范围 System.out.println("请输入是否有正负数:(1.有 2.没有)"); //输入提示 int zfnum = in.nextInt(); //输入是否有正负数 System.out.println("除法是否有余数:(3.有 4.没有)"); //输入提示 int ys=in.nextInt(); //输入是否有余数 System.out.println("请输入是否有乘除法:(5.有 6.没有)"); //输入提示 int fhn = in.nextInt(); //输入是否有乘除法 System.out.println("请输入是否有括号:(7.有 8.没有)"); //输入提示 int kh = in.nextInt(); //输入是否有括号 Random random =new Random(); int[][]sz=new int[num][10]; int f=0; //正负数的数字表示 int fhnum=0; //运算符号的数字表示 char zf=' '; //正负数的符号表示 char[][] fh=new char[num][10]; //运算符号的符号表示 int jl; //记录除法的位置 int kh1,kh2; //记录括号的位置 for(int l=0;l<num;l++) { int sznum=2+random.nextInt(9); //每道题的数字个数 2-10 for(int i=0;i<=sznum;i++) //生成数字 { sz[l][i]=random.nextInt(100)+1; for(;;) //控制数的范围 { if(sz[l][i]>rnum) sz[l][i]=random.nextInt(100)+1; else break; } } for(int i=0;i<=sznum;i++) //生成运算符号 { if(fhn==5) //计算有乘除法 { fhnum=random.nextInt(4); if(fhnum==0) fh[l][i]='+'; if(fhnum==1) fh[l][i]='-'; if(fhnum==2) fh[l][i]='*'; if(fhnum==3) { fh[l][i]='/'; if(ys==3) //计算除法时有余数 { jl=i; //确定除法符号的位置 for(;;) { if(sz[l][i]%sz[l][i+1]!=0) break; else { sz[l][i]=random.nextInt(100)+1; sz[l][i+1]=random.nextInt(100)+1; } } } if(ys==4) //计算除法时有余数 { jl=i; //确定除法符号的位置 for(;;) { if(sz[l][i]%sz[l][i+1]!=0) { sz[l][i]=random.nextInt(100)+1; sz[l][i+1]=random.nextInt(100)+1; } else break; } } } } if(fhn==6) //计算无乘除法 { fhnum=random.nextInt(2); if(fhnum==0) fh[l][i]='+'; if(fhnum==1) fh[l][i]='-'; } } fh[l][sznum]='='; System.out.print(l+1+": "); if(kh==7) //有括号时 { kh1=random.nextInt(sznum-1)+1; for(int i=0;i<kh1;i++) { if(zfnum==1) //计算有负数 f=random.nextInt(2); if(f==0) //正数 zf='+'; if(f==1) //负数 zf='-'; System.out.print("("+zf+sz[l][i]+")"+fh[l][i]); } System.out.print("(("+zf+sz[l][kh1]+")"+fh[l][kh1]+"("+zf+sz[l][kh1+1]+"))"+fh[l][kh1+1]); for(int i=kh1+2;i<=sznum;i++) { if(zfnum==1) //计算有负数 f=random.nextInt(2); if(f==0) //正数 zf='+'; if(f==1) //负数 zf='-'; System.out.print("("+zf+sz[l][i]+")"+fh[l][i]); } System.out.println(); } if(kh==8) //没有括号时 { for(int i=0;i<=sznum;i++) { if(zfnum==1) //计算有负数 f=random.nextInt(2); if(f==0) //正数 zf='+'; if(f==1) //负数 zf='-'; System.out.print("("+zf+sz[l][i]+")"+fh[l][i]); } System.out.println(); } } } }
运行结果截图:
分析一下完成时遇到的困难:
1.Mian 函数不存在,缺少;
解决方法:重新打开eclipse
2.在写代码的时候,把程序就行分块和继承可以提高代码可读性。但是我写的数字是分数为string类型,在父类函数中的操作用int类型比较简单,所以没有构建父类函数。
3.在写的时候,随机数直接用输入数据控制会产生数据溢出,可以给随机数规定了一个大范围,输入只能在大范围内,可以避免数据溢出报错
4.在写代码时出现了sz[l][i]%sz[l][i+1]==0会报错,所以要改成不等于
5.有时如果if语句没有写else则会显示错误。
6.Main 函数找不到,解决方法:将代码在重新输入一次(代码不变)
周活动总结表
姓名:谷伟华 日期 2016/3/19
|
听课 |
编写代码 |
阅读课本 |
准备考试 |
其他 |
|
日总计 |
周日 |
100 |
|
|
|
|
|
100 |
周一 |
|
90 |
|
|
|
|
90 |
周二 |
|
80 |
30 |
|
|
|
110 |
周三 |
|
60 |
20 |
|
|
|
80 |
周四 |
|
80 |
40 |
|
|
|
120 |
周五 |
|
130 |
|
|
120 |
|
250 |
周六 |
|
|
|
|
50 |
|
50 |
周总计 |
100 |
440 |
90 |
|
170 |
|
800 |
时间记录日志
学生:谷伟华 日期:2016/3/19
教师:王建民 课程:软件工程
日期 |
开始时间 |
结束时间 |
中断时间 |
净时间 |
活动 |
备注 |
C |
U |
3/14 |
8:00 |
9:50 |
10 |
100 |
听课 |
|
|
|
|
15:00 |
17:00 |
30 |
90 |
讨论作业思路 |
上厕所、休息 |
|
|
3/15 |
16:00 |
18:00 |
10 |
110 |
编写程序、看《构建之法》 |
上厕所 |
|
|
3/16 |
15:20 |
17:00 |
20 |
80 |
编写程序、看《构建之法》 |
上厕所、休息 |
|
|
3/17 |
9:00 |
11:30 |
30 |
120 |
编写程序、看《构建之法》 |
上厕所、休息 |
|
|
3/18 |
16:30 |
18:30 |
20 |
100 |
编写程序 |
上厕所、准备上课 |
|
|
|
21:00 |
23:30 |
|
150 |
编写程序、写博客园要发表的东西 |
|
|
|
3/19 |
12:40 |
13:30 |
|
50 |
写博客园要发表的东西 |
|
|
|
缺陷记录日志
学生:谷伟华
日期:2016/3/19
教员:王建民
程序号:四则运算2
日期 |
编号 |
类型 |
引入阶段 |
排除阶段 |
修复时间 |
修复缺陷 |
3/15 |
01 |
10 |
编码 |
编译 |
5min |
|
描述:Mian 函数不存在,缺少;解决方法:重新打开eclipse |
||||||
3/16 |
02 |
20 |
编码 |
编译 |
第二天 |
|
描述:随机数直接用输入数据控制会产生数据溢出,可以给随机数规定了一个大范围,输入只能在大范围内,可以避免数据溢出报错 |
||||||
3/17 |
03 |
70 |
编码 |
编译 |
1min |
|
描述:有时如果if语句没有写else则会显示错误 |
||||||
3/18 |
04 |
70 |
编码 |
编译 |
2min |
|
描述:sz[l][i]%sz[l][i+1]==0会报错,所以要改成不等于 |