一、实验题目:加减乘除
二、程序设计思想:
本程序共分为三大步:
1、 定义两个类,一个是式子类,另一个是分数类,其中式子类中包含分数类的对象。
2、 在主函数中,利用数组和查重函数,检验是否有重的式子,如果有则重新创建。在查重的时候,应该注意:加法和乘法中前后项相等也算式子相同。
3、在输出最后式子的时候,利用了string类型的formcat函数,将式子实现了对齐排版输出,并且在输出的时候,逐级调用输出函数,整体式子调用个体式子,再调用分数的输出。
三、程序代码:
import java.util.Scanner; public class jiajianchengchu { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.print("请输入要生成的随机数个数:"); int num=scanner.nextInt(),i; Shi[] shi=new Shi[num]; System.out.print(String.format("%-6s","序号")); System.out.println(String.format("%-6s","算式")); for(i=0;i<num;i++) { shi[i]=new Shi(); shi[i].chuangjian(); chachong(i,shi); System.out.print(String.format("%-6s",i+1)); shi[i].shuchu(); } } static void chachong(int n,Shi[] x) { int i; for(i=0;i<n;i++) { if(x[n].equals(x[i])) { x[n].chuangjian(); chachong(n,x); break; } } } } class Shi { Fenshu a,c,value; int b; Shi() { a=new Fenshu(); c=new Fenshu(); value=new Fenshu(); } void chuangjian() { a.chuangjian(); b=(int)(Math.random()*4); c.chuangjian(); while(c.zi==0&&b==3) { c.chuangjian(); } } void shuchu() { if(b==0) System.out.println(String.format("%-20s",a.output()+"+"+c.output()+"=")); if(b==1) System.out.println(String.format("%-20s",a.output()+"-"+c.output()+"=")); if(b==2) System.out.println(String.format("%-20s",a.output()+"*"+c.output()+"=")); if(b==3) System.out.println(String.format("%-20s",a.output()+"÷"+c.output()+"=")); } boolean equals(Shi y) { if(a.equals(y.a)&&b==y.b&&c.equals(y.c)) return true; else if((b==0||b==2)&&a.equals(y.c)&&c.equals(y.a)) return true; else return false; } } class Fenshu { int zi,mu; Fenshu() { } boolean equals(Fenshu x) { if(zi*x.mu==mu*x.zi) return true; return false; } void chuangjian() { zi=(int)(Math.random()*100); mu=(int)(Math.random()*100+1); while(zi>mu&&zi%mu!=0) { zi=(int)(Math.random()*100); mu=(int)(Math.random()*100+1); } } String output() { String out=""; if(zi==0) out+=zi; else if(mu==1) out+=zi; else out="("+zi+"/"+mu+")"; return out; }
}
四、程序结果截图:
五、课堂未完成原因:在课上,实验完成的不完整,即有的功能未能实现,如:查重、运算时有真分数等等。综合分析原因如下:
1、长时间未编程,导致编程时有的语句忘了。
2、对于一个程序,未能合理地分成若干个小模块。