您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 青岛理工大学第二次java上机
课程实验报告课程名称Java应用技术班级计算132班实验日期2015.9.23姓名李月娟学号201307039实验成绩实验名称实验2:类的封装性和继承性设计实验目的及要求1.掌握Java类的概念;2.熟练运用类的属性和方法。实验环境操作系统:WindowsIDE:JDK或者MyEclipse实验内容(1)有理数四则运算。编写一个Java应用程序,实现两个有理数的四则运算,要求有理数用分子和分母的形式表示。结果要求用“分子/分母”的形式表示。(2)表演最终得分。声明一个Average接口,其中约定求平均值的方法(参数为一个数组);声明First、Second类实现Average接口,分别给出求平均值的方法实现。A.类First中的功能为全部数值相加后求平均值。B.类Second中的功能为去掉一个最高分和一个最低分,再将总分求平均值。调试过程及实验结果(1)(2)总结(1)实例方法可以调用静态和非静态变量,而静态方法只能调用静态变量,一开始变量没有声明为static类型,导致调用出现错误(2)一开始没有注意到所得分数结果的正负以及分母是一的情况,导致最后得到结果格式不正确(3)接口中定义的方法默认publicabstract,变量默认publicstaticfinal,所以定义的变量为常量,值不能被改变。(4)声明数组时不必指定长度,但是初始化数组时必须指定数组长度,这就使得一开始想通过键盘输入给分的数目来指定数组长度变得不可行。如果想达到一开始的目的,可以使用集合类。(5)Array.sort()方法可以对数组进行排序,从而避免了在数组中找最大最小值的操作附录1.importjava.io.*;importjava.util.*;publicclassOperation{privatestaticinta,b,c,d;publicstaticvoidmain(String[]args){Scannerreader=newScanner(System.in);System.out.print(请输入第一个数的分子,分母:);a=reader.nextInt();b=reader.nextInt();System.out.println(第一个数为:+a+/+b);System.out.print(请输入第二个数的分子,分母:);c=reader.nextInt();d=reader.nextInt();System.out.println(第二个数为:+c+/+d);System.out.println(请输入要选择的运算:1加法2减法3乘法4除法5退出);intv=reader.nextInt();while(v!=5){switch(v){case1:add(a,b,c,d);break;case2:jian(a,b,c,d);break;case3:cheng(a,b,c,d);break;case4:chu(a,b,c,d);break;case5:break;}v=reader.nextInt();}}publicstaticintgcd(inta,intb){intr=a%b;while(r!=0){a=b;b=r;r=a%b;}returnb;}publicstaticintmulti(inta,intb){intmul,c=a,d=b;gcd(c,d);mul=d*a*b;returnmul;}publicstaticvoidadd(inta,intb,intc,intd){inte=a*d+b*c;intf=b*d;intr=gcd(e,f);e=e/r;f=f/r;if(e0||f0)System.out.print(两数相加的结果为:+-);elseSystem.out.print(两数相加的结果为:);if(Math.abs(f)==1)System.out.println(Math.abs(e));elseif(e==0)System.out.println(0);elseSystem.out.println(Math.abs(e)+/+Math.abs(f));}publicstaticvoidjian(inta,intb,intc,intd){inte=a*d-b*c;intf=b*d;intr=gcd(e,f);e=e/r;f=f/r;if(e0||f0)System.out.print(两数相减的结果为:+-);elseSystem.out.print(两数相减的结果为:);if(e==0)System.out.println(0);elseif(Math.abs(f)==1)System.out.println(Math.abs(e));elseSystem.out.println(Math.abs(e)+/+Math.abs(f));}publicstaticvoidcheng(inta,intb,intc,intd){inte=a*c;intf=b*d;intr=gcd(e,f);e=e/r;f=f/r;if(e0||f0)System.out.print(两数相乘的结果为:+-);elseSystem.out.print(两数相乘的结果为:);if(e==0)System.out.println(0);elseif(Math.abs(f)==1)System.out.println(Math.abs(e));elseSystem.out.println(Math.abs(e)+/+Math.abs(f));}publicstaticvoidchu(inta,intb,intc,intd){inte=a*d;intf=b*c;intr=gcd(e,f);e=e/r;f=f/r;if(e0||f0)System.out.print(两数相除的结果为:+-);elseSystem.out.print(两数相除的结果为:);if(e==0)System.out.println(0);elseif(Math.abs(f)==1)System.out.println(Math.abs(e));elseSystem.out.println(Math.abs(e)+/+Math.abs(f));}}2.importjava.io.*;importjava.util.*;interfaceAverage{doubleaverage(double[]a);}classFirstimplementsAverage{publicdoubleresult=0;publicdoubleaverage(double[]a){for(inti=0;ia.length;i++)result+=a[i];returnresult/a.length;}}classSecondimplementsAverage{publicdoubleresult=0;publicdoubleaverage(double[]a){Arrays.sort(a);for(inti=1;ia.length-1;i++){result+=a[i];}returnresult/(a.length-2);}}publicclassExample{publicstaticvoidmain(String[]args){Scannerreader=newScanner(System.in);System.out.print(请输入裁判的人数:);intcnt=reader.nextInt();double[]a=newdouble[cnt];System.out.print(请输入每位裁判打的分数:);for(inti=0;icnt;i++)a[i]=reader.nextDouble();Firstfirst=newFirst();Secondsecond=newSecond();System.out.println(First求平均值为:+first.average(a));System.out.println(Second求平均值为:+second.average(a));}}
本文标题:青岛理工大学第二次java上机
链接地址:https://www.777doc.com/doc-5209665 .html