四则运算2 程序设计思想:
在程序1的基础上添加要求:是否有乘除法,是否有括号(这个没有完成),数值范围,加减有无负数,除法有无余数。
在数组中存放运算符,添加一个只有加和减符号的数组,无乘除法的情况下,用这个数组即可实现。
数值范围:在生成随机数的时候,生成随机范围内的数。
加减有无负数:生成a,b两个随机数,a>b时生成的式子a在前。
除法有无余数:添加判断,如果生成的两个随机数相除有余数的话,重新生成即可。
源代码
package ER; import java.util.Scanner; public class Sisr2 { public static void main(String[] args) { // TODO Auto-generated method stub String A[]=new String[4]; A[0]="+"; A[1]="-"; A[2]="x"; A[3]="÷"; String B[]=new String[2]; B[0]="+"; B[1]="-"; int a,b,c,d; System.out.println("选择题目类型:1.分数练习;0.整数练习"); Scanner in=new Scanner(System.in); int k; k=in.nextInt(); if(k==0){ System.out.println("请输入生成题目的数量:"); int x,y,m,n,z,l; x=in.nextInt(); System.out.println("是否有乘除法:1.是;0.否"); y=in.nextInt(); System.out.println("请输入计算范围:"); m=in.nextInt(); n=in.nextInt(); System.out.println("加减有无负数:1.有;0.无"); z=in.nextInt(); System.out.println("除法有无余数:1.有;0.无"); l=in.nextInt(); if(y==0&&z==0&&l==0){ for(int i=0;i<x;i++){ a =(int)(Math.random()*(m-n))+n; b =(int)(Math.random()*(m-n))+n; if(a>b){ System.out.println(a+B[(int)(Math.random()*2)]+b); } else if(a<b){ System.out.println(b+B[(int)(Math.random()*2)]+a); } } } if(y==0&&z==0&&l==1){ for(int i=0;i<x;i++){ a =(int)(Math.random()*(m-n))+n; b =(int)(Math.random()*(m-n))+n; if(a>b){ System.out.println(a+B[(int)(Math.random()*2)]+b); } else if(a<b){ System.out.println(b+B[(int)(Math.random()*2)]+a); } } } if(y==0&&z==1&&l==0){ for(int i=0;i<x;i++){ a =(int)(Math.random()*(m-n))+n; b =(int)(Math.random()*(m-n))+n; System.out.println(a+B[(int)(Math.random()*2)]+b); } } if(y==0&&z==1&&l==1){ for(int i=0;i<x;i++){ a =(int)(Math.random()*(m-n))+n; b =(int)(Math.random()*(m-n))+n; System.out.println(a+B[(int)(Math.random()*2)]+b); } } if(y==1&&z==0&&l==0){ int j=1; while(j==x){ a =(int)(Math.random()*(m-n))+n; b =(int)(Math.random()*(m-n))+n; if(a%b==0){ System.out.println(a+A[(int)(Math.random()*4)]+b); j++; } else if(b%a==0){ System.out.println(b+A[(int)(Math.random()*4)]+a); j++; } } } if(y==1&&z==0&&l==1){ for(int i=0;i<x;i++){ a =(int)(Math.random()*(m-n))+n; b =(int)(Math.random()*(m-n))+n; if(a>b){ System.out.println(a+A[(int)(Math.random()*4)]+b); } else if(a<b){ System.out.println(b+A[(int)(Math.random()*4)]+a); } } } if(y==1&&z==1&&l==0){ int j1=1; while(j1==x){ a =(int)(Math.random()*(m-n))+n; b =(int)(Math.random()*(m-n))+n; if(a%b==0){ System.out.println(a+A[(int)(Math.random()*4)]+b); j1++; } else if(b%a==0){ System.out.println(b+A[(int)(Math.random()*4)]+a); j1++; } } } if(y==1&&z==1&&l==1){ for(int i=0;i<x;i++){ a =(int)(Math.random()*(m-n))+n; b =(int)(Math.random()*(m-n))+n; System.out.println(a+A[(int)(Math.random()*4)]+b); } } } if(k==1){ System.out.println("请输入生成题目的数量:"); int x,y,m,n,z,l; x=in.nextInt(); System.out.println("是否有乘除法:1.是;0.否"); y=in.nextInt(); System.out.println("请输入计算范围:"); m=in.nextInt(); n=in.nextInt(); System.out.println("加减有无负数:1.有;0.无"); z=in.nextInt(); System.out.println("除法有无余数:1.有;0.无"); l=in.nextInt(); if(y==0&&z==0&&l==0){ for(int i=0;i<x;i++){ a =(int)(Math.random()*(m-n))+n; b =(int)(Math.random()*(m-n))+n; c =(int)(Math.random()*(m-n))+n; d =(int)(Math.random()*(m-n))+n; if(a/b>c/d){ System.out.println(a+"/"+b+" "+B[(int)(Math.random()*2)]+" "+c+"/"+d); } else if(a/b<c/d){ System.out.println(c+"/"+d+" "+B[(int)(Math.random()*2)]+" "+a+"/"+b); } } } if(y==0&&z==0&&l==1){ for(int i=0;i<x;i++){ a =(int)(Math.random()*(m-n))+n; b =(int)(Math.random()*(m-n))+n; c =(int)(Math.random()*(m-n))+n; d =(int)(Math.random()*(m-n))+n; if(a/b>c/d){ System.out.println(a+"/"+b+" "+B[(int)(Math.random()*2)]+" "+c+"/"+d); } else if(a/b<c/d){ System.out.println(c+"/"+d+" "+B[(int)(Math.random()*2)]+" "+a+"/"+b); } } } if(y==0&&z==1&&l==0){ for(int i=0;i<x;i++){ a =(int)(Math.random()*(m-n))+n; b =(int)(Math.random()*(m-n))+n; c =(int)(Math.random()*(m-n))+n; d =(int)(Math.random()*(m-n))+n; System.out.println(a+"/"+b+" "+B[(int)(Math.random()*2)]+" "+c+"/"+d); } } if(y==0&&z==1&&l==1){ for(int i=0;i<x;i++){ a =(int)(Math.random()*(m-n))+n; b =(int)(Math.random()*(m-n))+n; c =(int)(Math.random()*(m-n))+n; d =(int)(Math.random()*(m-n))+n; System.out.println(a+"/"+b+" "+B[(int)(Math.random()*2)]+" "+c+"/"+d); } } if(y==1&&z==0&&l==0){ int j=1; while(j==x){ a =(int)(Math.random()*(m-n))+n; b =(int)(Math.random()*(m-n))+n; c =(int)(Math.random()*(m-n))+n; d =(int)(Math.random()*(m-n))+n; if(a/b % c/d==0){ System.out.println(a+"/"+b+" "+A[(int)(Math.random()*4)]+" "+c+"/"+d); j++; } else if(c/d % a/b==0){ System.out.println(c+"/"+d+" "+A[(int)(Math.random()*4)]+" "+a+"/"+b); j++; } } } if(y==1&&z==0&&l==1){ for(int i=0;i<x;i++){ a =(int)(Math.random()*(m-n))+n; b =(int)(Math.random()*(m-n))+n; c =(int)(Math.random()*(m-n))+n; d =(int)(Math.random()*(m-n))+n; if(a/b>c/d){ System.out.println(a+"/"+b+" "+A[(int)(Math.random()*4)]+" "+c+"/"+d); } else if(a/b<c/d){ System.out.println(c+"/"+d+" "+A[(int)(Math.random()*4)]+" "+a+"/"+b); } } } if(y==1&&z==1&&l==0){ int j1=1; while(j1==x){ a =(int)(Math.random()*(m-n))+n; b =(int)(Math.random()*(m-n))+n; c =(int)(Math.random()*(m-n))+n; d =(int)(Math.random()*(m-n))+n; if(a/b % c/d==0){ System.out.println(a+"/"+b+" "+A[(int)(Math.random()*4)]+" "+c+"/"+d); j1++; } else if(c/d % a/b==0){ System.out.println(c+"/"+d+" "+A[(int)(Math.random()*4)]+" "+a+"/"+b); j1++; } } } if(y==1&&z==1&&l==1){ for(int i=0;i<x;i++){ a =(int)(Math.random()*(m-n))+n; b =(int)(Math.random()*(m-n))+n; c =(int)(Math.random()*(m-n))+n; d =(int)(Math.random()*(m-n))+n; System.out.println(a+"/"+b+" "+A[(int)(Math.random()*4)]+" "+c+"/"+d); } } } } }
运行结果截图:
现在分数计算也有问题了,起初没问题 ,再添加括号的时候出现问题,生成不了题目,排查错误过程中也没找到解决办法,只能先放弃括号这个要求。
事件记录日志:
日期 |
开始时间 |
结束时间 |
中断时间 |
净时间 |
活动 |
备注 |
3/7 |
13:50 |
15:17 |
30min |
57min |
编程 |
作业2 |
3/7 |
19:04 |
20:00 |
20min |
36min |
编程 |
Jave web |
3/8 |
15:10 |
17:30 |
15min |
125min |
编程 |
作业2 |
3/10 |
19:00 |
22:00 |
30min |
150min |
编程 |
作业2 |
3/11 |
12:30 |
15:00 |
10min |
140min |
编程 |
作业2 |
备注:3/10日 程序崩溃- -,重新编写。
缺陷记录日志:
日期 |
编号 |
类型 |
引入阶段 |
排除阶段 |
修复时间 |
修复缺陷 |
3/7 |
1 |
编码 |
编译 |
5min |
修复被除数为0的情况 |
|
3/7 |
2 |
编码 |
编译 |
10min |
修复分数不能生成式子 |
|
3/10 |
3 |
编码 |
编译 |
30min |
添加括号,修改代码使程序崩溃,没有修复 |
周活动总结表:
任务 日期 |
听课(min) |
编写程序 (min) |
阅读课本(min) |
准备考试(min) |
日总结 (min) |
||
周日3/5 |
|||||||
周一 |
200 |
200 |
|||||
周二 |
100 |
100 |
200 |
||||
周三 |
125 |
30 |
155 |
||||
周四 |
90 |
90 |
|||||
周五 |
150 |
150 |
|||||
周六 |
140 |
140 |