软件工程个人作业02。
2016-03-19 16:39
411 查看
1.设计思想:
建立一个主函数,声明参数变量。另建一个空成员变量的类,用于设置主函数中的成员变量,或对调用的数组进行相关操作,然后在主函数将字符串进行连接。
2.程序代码:
4.总结:
用java写这么多行的程序还是头一次。平常还是习惯用c写。其中还是遇到了一些问题,比如java中似乎没有值地址递,想在别的函数中直接修改调用的值是不行的(除非调用的是数组的首地址),只能返回出来再赋值给它。想不这么实现也可以,就得把参数定义给成员变量。后来想到这里,确实可行,把设置的参数看成一组成员变量,不过顺序运行下来,也就一组对象,也没有必要重写大费周章了。在这点上,我好像看出了java的方便与麻烦之处。另一方面,通过网上的查询,也明白了点java中的输出流。总的来讲,收获还是不小的。
5.每周计划
6.时间记录日志
7.缺陷记录日志
都是些数组超出长度的小错误,没有在修改缺陷这里花费多少时间。
建立一个主函数,声明参数变量。另建一个空成员变量的类,用于设置主函数中的成员变量,或对调用的数组进行相关操作,然后在主函数将字符串进行连接。
2.程序代码:
package课堂; importjava.util.Random; importjava.io.File; importjava.io.FileOutputStream; importjava.io.IOException; importjava.io.PrintStream; publicclassTheAirthmeticOperation { publicstaticvoidmain(Stringargs[])throwsIOException { TheAirthmeticOperation_FuctionFuction=newTheAirthmeticOperation_Fuction();//声明Fuction。 FileOutputStreamfs=newFileOutputStream(newFile("D:\\text.txt")); PrintStreamp=newPrintStream(fs); intnum=Fuction.Setnumber();//num位数组上限。 intn1=100;//n1为随机数上限,默认100。 intn2=2;//n2控制有无乘除法,2:加减法;4:加减乘除法。 intn3=0;//n3控制输出方式,0:直接输出;1:输出到txt。 intn4=0;//n4控制是否定制多数运算。 intn5=0;//n5控制多数运算数量。 intn6=0;//n6控制多数运算有无括号。 Stringstr="";//初始化str,用于输出式子。 int[]Array1=newint[num]; int[]Array2=newint[num];//Array1,Array2数组用于求加减法或分数运算的第一个分数。 int[]Array3=newint[num]; int[]Array4=newint[num];//Array3,Array4用于生成第二个分数。 int[]judge1=newint[num];//根据随机结果输出算数符号。 int[]judge2=newint[num];//判断该组数据用于整数运算还是分数运算,0:整数;1:分数。 n1=Fuction.Setrange();//为n1设置值。 n2=Fuction.Set_mul_and_div();//为n2设置值。 for(inti=0;i<num;i++) { Array1[i]=Fuction.Randomnumber(n1); Array2[i]=Fuction.Randomnumber(n1); Array3[i]=Fuction.Randomnumber(n1); Array4[i]=Fuction.Randomnumber(n1); judge1[i]=newRandom().nextInt(n2); judge2[i]=newRandom().nextInt(2); } Fuction.Setnegativenumber(Array1,Array2,num);//随机为Array1,Array2数组添加负号(可选择不添加)。 Array1=Fuction.Isrepetition(Array1,num,n1);//使Array1变得不相同。 Fuction.Setremainder(Array1,Array2,num,n2);//设置除法有无余数。 n3=Fuction.Printmethod();//为n3设置值。 n4=Fuction.Is_customization();//为n4设置值。 n5=Fuction.customization_number();//为n5设置值。 n6=Fuction.customization_brackets();//为n6设置值。 for(inti=0;i<num;i++) { if(judge2[i]==0)//judge2值为0时,执行整数运算。 { str=""; str+=Array1[i]+Fuction.Symbol(str,judge1[i]); if(Array2[i]<0)//Array2为负时,为其加括号。 { str+="("+Array2[i]+")="; } else//不为负时,跳过。 str+=(Array2[i]+"="); if(n3==0) { System.out.println(str); } else { p.println(str); } } if(judge2[i]==1)//judge2值为1时,执行真分数运算。 { Fuction.Absolutevaluecomparison(Array1,Array2,i); Fuction.Absolutevaluecomparison(Array3,Array4,i); str=""; str+="("+Array1[i]+"/"+Array2[i]+")" +Fuction.Symbol(str,judge1[i]) +"("+Array3[i]+"/"+Array4[i]+")="; if(n3==0) { System.out.println(str); } else { p.println(str); } } } if(n4==1) { for(inti=0;i<n5;i++) { str=""; str=Fuction.customization(n6); if(n3==0) { System.out.println(str); } else { p.println(str); } } } p.close(); } }
importjava.util.Random; importjava.util.Scanner; publicclassTheAirthmeticOperation_Fuction { Scannersc=newScanner(System.in); publicintRandomnumber(intn)//重写的随机函数,避免随机出零。 { intnumber=0; while(number==0) { number=newRandom().nextInt(n); } returnnumber; } publicintSetnumber()//设置数组,及习题数量。 { intn=30; System.out.println("输入数组数量"); n=sc.nextInt(); returnn; } publicintSetrange()//设置随机数范围。 { intn=100; System.out.println("输入数值范围"); n=sc.nextInt(); returnn; } publicintSet_mul_and_div()//设置习题中是否有乘除法。 { intn=0;intm=2; System.out.println("是否有乘除法:(0:无1:有)"); n=sc.nextInt(); if(n==0) { m=2; } else m=4; returnm; } publicintPrintmethod()//设置输出习题方式。 { intn=0; System.out.println("打印方式:(0:直接输出1:打印到txt)"); n=sc.nextInt(); returnn; } publicintIs_customization()//是否定制多数运算。 { intn=0; System.out.println("是否定制多数运算:(0:否1:是)"); n=sc.nextInt(); returnn; } publicintcustomization_number()//设置多数运算数量。 { intn=0; System.out.println("输入多数运算数量"); n=sc.nextInt(); returnn; } publicintcustomization_brackets()//设置多数运算数量。 { intn=0; System.out.println("十位数运算是否有括号:(0:否1:是)"); n=sc.nextInt(); returnn; } publicStringcustomization(intn)//定制多数习题。 { int[]Array=newint[10];//定义一个数组。 int[]a=newint[10];//控制数与数之间符号。 int[]b=newint[20];//控制在某位值是否出现括号。 String[]brackets=newString[20];//用于存放括号。 Stringstr=""; for(inti=0;i<10;i++)//随机数。 { a[i]=newRandom().nextInt(4); Array[i]=Randomnumber(20); } for(inti=0;i<20;i++)//初始化括号数组。 { brackets[i]=""; } if(n==1)//用户选择定制。 { for(inti=0;i<20;i+=2) { b[i]=newRandom().nextInt(4);/*为b[i生成随机数,当b[i]为零时, brackets[i]添加左括号,brackets[i+3]添加右括号,括号套括号未考虑。*/ if(i>=0&&i<17)//i>16时,没有位置添加右括号,遂向下执行。 { if(b[i]==0) { brackets[i]+="("; brackets[i+3]+=")"; i+=2; } } } } for(inti=0;i<9;i++)//将数,括号,符号相连。 { str+=brackets[2*i]+Array[i]+brackets[2*i+1]; str=Symbol(str,a[i]); } str+=Array[9]+brackets[19]+"="; returnstr; } publicvoidSetremainder(int[]Array1,int[]Array2,intnum,intn2) {//若设置除法无余数,另Array1[i]<Array2[i]。 if(n2==2) { return; } intn=0; System.out.println("除法是否有余数:(0:无1:有)"); n=sc.nextInt(); if(n==0) { for(inti=0;i<num;i++) { Absolutevaluecomparison(Array1,Array2,i); } } else return; } publicvoidSetnegativenumber(int[]Array1,int[]Array2,intnum) {//若设置有负数,随机为Array[i]添加符号,i为随机 intn=0;intstochastic1=0;intstochastic2=0; System.out.println("运算有无负数:(0:无1:有)"); n=sc.nextInt(); if(n==0) { return; } else { while(true) { stochastic1=Randomnumber(num); stochastic2=Randomnumber(num); Array1[stochastic1]=-Array1[stochastic1]; Array2[stochastic2]=-Array2[stochastic2]; if(stochastic1==1)//当stochastic1=1时,跳出循环。 { break; } } } } publicvoidAbsolutevaluecomparison(int[]Array1,int[]Array2,inti) {//使两个数最小的数放在Array[i]中,保证无余数或分数为真分数。 if(Math.abs(Array1[i])>Math.abs(Array2[i])) { intt=Array1[i]; Array1[i]=Array2[i]; Array2[i]=t; } } publicint[]Isrepetition(int[]Array,intnum,intn1) {//删除Array数组中重复元素,缺省数重新随机(此处未考虑随机后还有相等情况,因重复几率较低)。 intlength=1; booleanflag=false; for(inti=1;i<Array.length;i++) { for(intj=0;j<length;j++) { if(Array[i]==Array[j]) { flag=true; } } if(!flag) { Array[length]=Array[i]; length++; } flag=false; } int[]newArray=newint[num]; System.arraycopy(Array,0,newArray,0,length); for(inti=length;i<num;i++) { newArray[i]=Randomnumber(n1); } returnnewArray; } publicStringSymbol(Stringstr,intvalue) {//根据值为str添加符号。 if(value==0) { str+="+"; } if(value==1) { str+="-"; } if(value==2) { str+="*"; } if(value==3) { str+="/"; } returnstr; } } 3.运行截图 :
4.总结:
用java写这么多行的程序还是头一次。平常还是习惯用c写。其中还是遇到了一些问题,比如java中似乎没有值地址递,想在别的函数中直接修改调用的值是不行的(除非调用的是数组的首地址),只能返回出来再赋值给它。想不这么实现也可以,就得把参数定义给成员变量。后来想到这里,确实可行,把设置的参数看成一组成员变量,不过顺序运行下来,也就一组对象,也没有必要重写大费周章了。在这点上,我好像看出了java的方便与麻烦之处。另一方面,通过网上的查询,也明白了点java中的输出流。总的来讲,收获还是不小的。
5.每周计划
听课 | 编程 | 读书 | 总计 | |
周一 | 2 | 2.5 | 0 | 5 |
周二 | 0 | 1 | 0 | 0.5 |
周三 | 0 | 1 | 0 | 1 |
周四 | 0 | 1 | 0 | 1 |
周五 | 0 | 0.5 | 0 | 0.5 |
周六 | 0 | 0.5 | 0 | 0.5 |
周日 | 0 | 0 | 1.5 | 1.5 |
日期 | 开始时间 | 结束时间 | 中断时间(min) | 净时间(min) | 活动 | 备注 |
3.14 | 8:00 | 9:50 | 10 | 100 | 上课 | 课间休息十分钟 |
14:00 | 17:30 | 48 | 132 | 编程 | 中断时间为躺着冥思或溜达 | |
3.15 | 14:00 | 15:00 | 2 | 58 | 编程 | |
21:00 | 21:40 | 5 | 35 | 编程 | ||
3.16 | 7:00 | 7:20 | 0 | 20 | 编程 | |
16:00 | 16:30 | 1 | 29 | 编程 | ||
20:00 | 20:40 | 5 | 35 | 编程 | ||
3.17 | 16:30 | 17:20 | 8 | 42 | 编程 | |
3.18 | 7:00 | 7:15 | 0 | 15 | 编程 | |
17:00 | 17:30 | 6 | 24 | 编程 | ||
3.19 | 11:05 | 11:32 | 0 | 27 | 编程 | |
总计 | / | / | 85 | 507 | / |
都是些数组超出长度的小错误,没有在修改缺陷这里花费多少时间。
相关文章推荐
- 输入系数a、 b、 c, 求解一元二次方程ax2+bx+c=0的根
- 圆与圆
- VLC 关键模块结构分析
- AsyncTask使用以及源码分析
- HIVE的内部表和外部表
- 给定两个已排序的表L1和L2 只使用基本的表操作编写计算L1∩L2的过程 交集
- 深度优先搜索
- discuz二级导航选择横排样式不显示的解决方法
- ResultSet
- 安卓静态Fragment与动态Fragment的理解
- 290. Word Pattern
- 六、Drawable
- hdu 2065 "红色病毒"问题
- 19. UDP 编程
- 数据结构笔记-----图
- [转]sql语句中出现笛卡尔乘积 SQL查询入门篇
- 20160319中艺收盘分析
- AAC ADTS格式分析
- 开始我的博客之旅
- android相机和相册