设计思路:在原程序的基础上,定义一个整型变量,输入,如果该变量为1,则无乘除法,如果该变量为0,则有乘除法,如果无乘除运算,再定义一个变量,进行除法有无余数的限制,再定义一个变量,进行加减有无余数的限制。确定数值范围的时候,定义一个变量,来表示随机数可能取到的最大值,在随机数函数之前输入该变量,确定数值范围,将各种分类情况下的计算用函数包装,用for循环判断有重复则所有数重新赋值。
程序代码:
主函数:
package demo; import java.util.Random; import java.util.Scanner; public class Arithmetic { Scanner f=new Scanner(System.in); public int setRange()//设置数值范围 { System.out.println("请输入要进行计算的数值的范围:"); int N=f.nextInt(); return N; } public int judge_Min()//判断加减法是否有负数 { System.out.println("0:加减法有负数,1:加减法无负数,请选择:"); int g=f.nextInt(); return g; } public int judge_Mul_Div()//判断是否有乘除法 { System.out.println("0:有乘除法,1:没有乘除法,请选择:"); int e=f.nextInt(); return e; } public void Add(int x,int y,int i)//无假分数加法 { System.out.println(i+1+": "+x+"+"+y+"="); } public void Add_Imp(int x,int y,int a,int b,int i)//有假分数加法 { while(a==0||b==0) { a=new Random().nextInt(5); b=new Random().nextInt(5); } System.out.println(i+1+": "+"("+x*a+"/"+x+")"+"+"+"("+y*b+"/"+y+")"+"="); } public void Sub_Minno(int x,int y,int i)//无负数无假分数减法 { if(x>y) System.out.println(i+1+": "+x+"-"+y+"="); else System.out.println(i+1+": "+y+"-"+x+"="); } public void Sub_Minno_Imp(int x,int y,int a,int b,int i)//无负数有假分数减法 { while(a==0||b==0) { a=new Random().nextInt(5); b=new Random().nextInt(5); } if(x>y) System.out.println(i+1+": "+"("+x*a+"/"+x+")"+"-"+"("+y*b+"/"+y+")"+"="); else System.out.println(i+1+": "+"("+y*b+"/"+y+")"+"-"+"("+x*a+"/"+x+")"+"="); } public void Sub_Min(int x,int y,int i)//有负数无假分数减法 { System.out.println(i+1+": "+x+"-"+y+"="); } public void Sub_Min_Imp(int x,int y,int a,int b,int i)//有负数有假分数减法 { while(a==0||b==0) { a=new Random().nextInt(5); b=new Random().nextInt(5); } System.out.println(i+1+": "+"("+x*a+"/"+x+")"+"-"+"("+y*b+"/"+y+")"+"="); } public void Mul(int x,int y,int i)//无假分数乘法 { System.out.println(i+1+": "+x+"*"+y+"="); } public void Mul_Imp(int x,int y,int a,int b,int i)//有假分数乘法 { while(a==0||b==0) { a=new Random().nextInt(5); b=new Random().nextInt(5); } System.out.println(i+1+": "+"("+x*a+"/"+x+")"+"*"+"("+y*b+"/"+y+")"+"="); } public void Div(int x,int y,int i)//无假分数无余数除法 { while(y==0||x%y!=0) { x=new Random().nextInt(100); y=new Random().nextInt(100); } System.out.println(i+1+": "+x+"/"+y+"="); } public void Div_Imp(int x,int y,int a,int b,int i)//有假分数无余数除法 { while(y==0||a==0||b==0||x%y!=0) { y=new Random().nextInt(100); a=new Random().nextInt(10); b=new Random().nextInt(10); } System.out.println(i+1+": "+"("+x*a+"/"+x+")"+"/"+"("+y*b+"/"+y+")"+"="); } public void Div_Rem(int x,int y,int i)//无假分数有余数除法 { while(y==0) { y=new Random().nextInt(100); } System.out.println(i+1+": "+x+"/"+y+"="); } public void Div_Imp_Rem(int x,int y,int a,int b,int i)//有假分数有余数除法 { while(y==0||a==0||b==0) { y=new Random().nextInt(100); a=new Random().nextInt(10); b=new Random().nextInt(10); } System.out.println(i+1+": "+"("+x*a+"/"+x+")"+"/"+"("+y*b+"/"+y+")"+"="); } }
类和函数:
package demo; import java.util.Random; import java.util.Scanner; public class Arithmetic { Scanner f=new Scanner(System.in); public int setRange()//设置数值范围 { System.out.println("请输入要进行计算的数值的范围:"); int N=f.nextInt(); return N; } public int judge_Min()//判断加减法是否有负数 { System.out.println("0:加减法有负数,1:加减法无负数,请选择:"); int g=f.nextInt(); return g; } public int judge_Mul_Div()//判断是否有乘除法 { System.out.println("0:有乘除法,1:没有乘除法,请选择:"); int e=f.nextInt(); return e; } public void Add(int x,int y,int i)//无假分数加法 { System.out.println(i+1+": "+x+"+"+y+"="); } public void Add_Imp(int x,int y,int a,int b,int i)//有假分数加法 { while(a==0||b==0) { a=new Random().nextInt(5); b=new Random().nextInt(5); } System.out.println(i+1+": "+"("+x*a+"/"+x+")"+"+"+"("+y*b+"/"+y+")"+"="); } public void Sub_Minno(int x,int y,int i)//无负数无假分数减法 { if(x>y) System.out.println(i+1+": "+x+"-"+y+"="); else System.out.println(i+1+": "+y+"-"+x+"="); } public void Sub_Minno_Imp(int x,int y,int a,int b,int i)//无负数有假分数减法 { while(a==0||b==0) { a=new Random().nextInt(5); b=new Random().nextInt(5); } if(x>y) System.out.println(i+1+": "+"("+x*a+"/"+x+")"+"-"+"("+y*b+"/"+y+")"+"="); else System.out.println(i+1+": "+"("+y*b+"/"+y+")"+"-"+"("+x*a+"/"+x+")"+"="); } public void Sub_Min(int x,int y,int i)//有负数无假分数减法 { System.out.println(i+1+": "+x+"-"+y+"="); } public void Sub_Min_Imp(int x,int y,int a,int b,int i)//有负数有假分数减法 { while(a==0||b==0) { a=new Random().nextInt(5); b=new Random().nextInt(5); } System.out.println(i+1+": "+"("+x*a+"/"+x+")"+"-"+"("+y*b+"/"+y+")"+"="); } public void Mul(int x,int y,int i)//无假分数乘法 { System.out.println(i+1+": "+x+"*"+y+"="); } public void Mul_Imp(int x,int y,int a,int b,int i)//有假分数乘法 { while(a==0||b==0) { a=new Random().nextInt(5); b=new Random().nextInt(5); } System.out.println(i+1+": "+"("+x*a+"/"+x+")"+"*"+"("+y*b+"/"+y+")"+"="); } public void Div(int x,int y,int i)//无假分数无余数除法 { while(y==0||x%y!=0) { x=new Random().nextInt(100); y=new Random().nextInt(100); } System.out.println(i+1+": "+x+"/"+y+"="); } public void Div_Imp(int x,int y,int a,int b,int i)//有假分数无余数除法 { while(y==0||a==0||b==0||x%y!=0) { y=new Random().nextInt(100); a=new Random().nextInt(10); b=new Random().nextInt(10); } System.out.println(i+1+": "+"("+x*a+"/"+x+")"+"/"+"("+y*b+"/"+y+")"+"="); } public void Div_Rem(int x,int y,int i)//无假分数有余数除法 { while(y==0) { y=new Random().nextInt(100); } System.out.println(i+1+": "+x+"/"+y+"="); } public void Div_Imp_Rem(int x,int y,int a,int b,int i)//有假分数有余数除法 { while(y==0||a==0||b==0) { y=new Random().nextInt(100); a=new Random().nextInt(10); b=new Random().nextInt(10); } System.out.println(i+1+": "+"("+x*a+"/"+x+")"+"/"+"("+y*b+"/"+y+")"+"="); } }
结果截图: