软件工程个人作业02(四则运算2)
题目要求:
是否有乘除法;
是否有括号(最多可以支持十个数参与计算);
数值范围;
加减有无负数;
除法有无余数!
四则运算2的设计思想:因为题目要求可以选择是否有除法,是否有括号,加减有无负数,除法有无余数。所以这里考虑用if~~else语句来进行选择。目前程序无法完成生成题目是否有括号的要求。
源程序代码:
import java.util.Random; import java.util.Scanner; public class sizeyunsuan2 { /*是否有乘除法; 是否有括号(最多可以支持十个数参与计算); 数值范围; 加减有无负数; 除法有无余数!*/ /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner in=new Scanner(System.in); char a1[]=new char[4]; a1[0]='+'; a1[1]='-'; a1[2]='x'; a1[3]='÷'; char a2[]=new char[2]; a2[0]='+'; a2[1]='-'; Random random=new Random(); System.out.println("******小学生四则运算题目自动生成系统—整数部分—>******"); System.out.println("运算是否需要包含乘法与除法?(1:是,0:否)"); int flag1=in.nextInt();//是否包含乘除法 System.out.println("加减有无负数?1:是,0:否"); int flag2=in.nextInt();//加减有无负数 System.out.println("请输入运算数的范围(即运算数最大能是多少:)"); int range=in.nextInt();//题目运算数范围 System.out.println("请输入所需题目个数:"); int number=in.nextInt(); if(flag1==0)//无乘除法 a2 { if(flag2==1)//不含乘除法,加减有负数 { for(int i=0;i<number;i++) { int a=random.nextInt(2*range); int b=random.nextInt(2*range); System.out.print("("); System.out.print(range-a); System.out.print(")"); System.out.print(a2[(int) (Math.random()*2)]); System.out.print("("); System.out.print(range-b); System.out.println(")"+"="); } } else if(flag2==0) //不含乘除法,加减无负数 { for(int i=0;i<number;i++) { int a=random.nextInt(range); int b=random.nextInt(range); System.out.print("("); System.out.print(range-a); System.out.print(")"); System.out.print(a2[(int) (Math.random()*2)]); System.out.print("("); System.out.print(range-b); System.out.println(")"+"="); } } } else if(flag1==1)//有乘除法 { System.out.print("乘除有无余数?1:是,0:否"); int flag3=in.nextInt();//乘除有无余数 if(flag2==1)//加减有负数 { if(flag3==1)//乘除有余数 { for(int i=0;i<number;i++) { int a=random.nextInt(2*range); int b=random.nextInt(2*range); System.out.print("("); System.out.print(range-a); System.out.print(")"); System.out.print(a1[(int) (Math.random()*4)]); System.out.print("("); System.out.print(range-b); System.out.println(")"+"="); } } else if(flag3==0)//乘除无余数 ,加减有负数 { for(int i=0;i<number;i++) { int a=random.nextInt(2*range); int b=random.nextInt(2*range); while((range-b)==0||(range-a)%(range-b)!=0) { a=random.nextInt(2*range); b=random.nextInt(2*range); } System.out.print("("); System.out.print(range-a); System.out.print(")"); System.out.print(a1[(int) (Math.random()*4)]); System.out.print("("); System.out.print(range-b); System.out.println(")"+"="); } } } else if(flag2==0)//有除法,加减无负数 { if(flag3==1)//有余数 { for(int i=0;i<number;i++) { int a=random.nextInt(range); int b=random.nextInt(range); System.out.print("("); System.out.print(a); System.out.print(")"); System.out.print(a1[(int) (Math.random()*4)]); System.out.print("("); System.out.print(b); System.out.println(")"+"="); } } else if(flag3==0)//无余数 { for(int i=0;i<number;i++) { int a=random.nextInt(range); int b=random.nextInt(range); while(b==0||a%b!=0)//判断加减无负数,乘除无余数 { a=random.nextInt(range); b=random.nextInt(range); } System.out.print("("); System.out.print(a); System.out.print(")"); System.out.print(a1[(int) (Math.random()*4)]); System.out.print("("); System.out.print(b); System.out.println(")"+"="); } } } } else {System.out.println("输入有误!!");} System.out.println("********小学生四则运算题目自动生成系统—分数部分—>*********"); System.out.print("是否需要乘除法?1:是,0:否"); int flag4=in.nextInt(); System.out.print("加减有无负数?1:是,0:否"); int flag5=in.nextInt(); System.out.print("请输入数值范围:(即最大的数字是多少)"); int range1=in.nextInt(); System.out.print("请输入题目数量:"); int number1=in.nextInt(); if(flag4==1)//有乘除法 { if(flag5==1)//加减有负数 { for(int i=0;i<number1;i++) { int a=random.nextInt(2*range1); int b=random.nextInt(range1); int c=random.nextInt(2*range1); int d=random.nextInt(range1); while(range1-a==0||range1-b==0||range1-c==0||range1-d==0) { a=random.nextInt(2*range1); b=random.nextInt(2*range1); c=random.nextInt(2*range1); d=random.nextInt(2*range1); } System.out.print("("+(range1-a)); System.out.print("/"); System.out.print(range1-b+")"); System.out.print(a1[(int) (Math.random()*4)]); System.out.print("("+(range1-c)); System.out.print("/"); System.out.println(range1-d+")="); } } else if(flag5==0)//加减无负数 { for(int i=0;i<number1;i++) { int a=random.nextInt(range1); int b=random.nextInt(range1); int c=random.nextInt(range1); int d=random.nextInt(range1); while(a==0||b==0||c==0||d==0) { a=random.nextInt(range1); b=random.nextInt(range1); c=random.nextInt(range1); d=random.nextInt(range1); } System.out.print("("+a+"/"); System.out.print(b+")"); System.out.print(a1[(int) (Math.random()*4)]); System.out.print("("+c); System.out.print("/"); System.out.println(d+")="); } } } else if(flag4==0)//无乘除法 { if(flag5==1)//加减有负数 { for(int i=0;i<number1;i++) { int a=random.nextInt(2*range1); int b=random.nextInt(2*range1); int c=random.nextInt(2*range1); int d=random.nextInt(2*range1); while(range1-a==0||range1-b==0||range1-c==0||range1-d==0) { a=random.nextInt(2*range1); b=random.nextInt(2*range1); c=random.nextInt(2*range1); d=random.nextInt(2*range1); } System.out.print("("+(range1-a)); System.out.print("/"+(range1-b)+")"); System.out.print(a2[(int) (Math.random()*2)]); System.out.print("("+(range1-c)); System.out.print("/"+(range1-d)); System.out.println(")="); } } else if(flag5==0)//加减无负数 { for(int i=0;i<number1;i++) { int a=random.nextInt(range1); int b=random.nextInt(range1); int c=random.nextInt(range1); int d=random.nextInt(range1); while(b==0||d==0) { b=random.nextInt(range1); d=random.nextInt(range1); } if(a==0||c==0) { a=random.nextInt(range1); c=random.nextInt(range1); } System.out.print("("+a); System.out.print("/"+b+")"); System.out.print(a2[(int) (Math.random()*2)]); System.out.print("("+c); System.out.print("/"+d); System.out.println(")="); } } } } }
运行结果截图:
项目计划日志:
日期/任务 |
听课 |
阅读课本 |
课下学习 |
|
日总计 |
周日3.5 |
|
|
|
|
|
周一 |
120m |
30m |
30m |
|
150m |
周二 |
|
|
40m |
|
40m |
周三 |
|
|
30m |
|
30m |
周四 |
120m |
40m |
20m |
|
180m |
周五 |
|
|
30m |
|
30m |
周六 |
|
|
40m |
|
40m |
周总计 |
240m |
70m |
190m |
|
520m |
时间记录日志:
日期 |
开始时间 |
结束时间 |
中断时间 |
净时间 |
活动 |
备注 |
C |
U |
3.6 |
14:00 |
16:00 |
10m |
110m |
上课,编程 |
软件工程课 |
|
|
3.7 |
19:00 |
21:00 |
20m |
100m |
看书,编程 |
写软件工程作业 |
|
|
3.8 |
19:00 |
21:00 |
15m |
105m |
看书,编程 |
学javaweb |
|
|
3.9 |
16:00 |
18:00 |
10m |
110m |
上课 |
Javaweb上课 |
|
|
3.10 |
18:00 |
20:00 |
30m |
90m |
构思,写java |
写四则运算程序 |
|
|
缺陷记录日志:
3/10:if~else 语句出现逻辑错误,后来发现及时改正。