java第二次实验报告
java实验报告 2

实验报告课程:Java 编程技术班级:网络1203班学号:姓名:实验4 面向对象编程一、实验目的通过编程和上机实验理解Java 语言是如何体现面向对象编程基本思想,了解类的封装方法,以及如何创建类和对象,了解成员变量和成员方法的特性,掌握OOP 方式进行程序设计的方法,了解类的继承性和多态性的作用。
二、实验内容1.创建一个名为Dog的类,它具有重载的bark()方法。
bark()方法应根据不同的基本数据类型的参数来进行重载,bark()方法可根据参数输出狗吠(barking)、咆哮(howling)等信息。
编写main()方法来调用不同的bark()方法。
源代码如下:public class Dog {void f(int m){System.out.println("barking!");}void f(double n){System.out.println("hoeling!");}public static void main(String[] args){Dog d=new Dog();d.f(2);d.f(2.2);}}运行界面如下:2.创建Rodent(啮齿动物)类,其子类有Mouse(老鼠)、Mole(鼹鼠)、Hamster(大颊鼠)。
在父类中,提供对所有的Rodent通用的方法。
在子类中,根据该子类特定的行为习性来覆盖这些方法。
例如老鼠属杂食(omnivorous),鼹鼠主食昆虫(insect),大颊鼠主食植物种子(plant seed)。
创建一个Rodent 数组,填充不同的数据类型,然后调用父类的方法,观察会发生什么情况。
源代码如下:public class Rodent {void eat(){System.out.println("zhushi");}public static void main(String[] args){Rodent r[]=new Rodent[4];Rodent rodent=new Rodent();Mouse mouse=new Mouse();Mole mole=new Mole();Hamster hamster=new Hamster();r[0]=rodent;r[1]=mouse;r[2]=mole;r[3]=hamster;r[0].eat();r[1].eat();r[2].eat();r[3].eat();}}class Mouse extends Rodent{void eat(){System.out.println("omniovrous!");}}class Mole extends Rodent{void eat(){System.out.println("insect!");}}class Hamster extends Rodent{void eat(){System.out.println("plant seed!");}}运行界面如下:3.3.修改上述第9题中的Rodent类,使其成为一个抽象类。
java实验二报告

中国矿业大学计算机学院实验报告课程名称 java实验实验名称实验二面向对象编程班级_____ 姓名_____学号___ 实验日期_2013_-5-27____实验报告要求:1.实验目的 2.实验内容 3.实验步骤4.运行结果5.流程图6.实验体会一、实验代码及演示结果1. 编一程序,求两个正整数m、n的最大公约数。
要求程序中有两个方法,分别使用循环和递归,最后在主方法中两次求解并输出最大公约数。
package com;import java.util.Scanner;public class ex21{public static int num1,num2,temp1,temp2;public static void main(String args[]){System.out.print("请输入两个数字:");Scanner in=new Scanner(System.in);num1=in.nextInt();num2=in.nextInt();if(num1>num2){temp1=solution1(num1,num2);temp2=solution2(num1,num2);}else{temp1=solution1(num2,num1);temp2=solution2(num2,num1);}System.out.println("循环法得到"+num1+"和"+num2+"的最大公约数为:"+temp1);System.out.println("递归法得到"+num1+"和"+num2+"的最大公约数为:"+temp2);}private static int solution1(int x,int y){int r;while(y!=0){r=x%y;x=y;y=r;}return x;}private static int solution2(int m,int n){if(n==0){return m;}else{return solution2(n,m%n);}}}结果演示:2.使用类编写程序(在程序中定义类,然后在主方法中创建类的对象,并调用该类中的方法,观察所得结果。
实验报告Java二

JA V A实验报告系(教研室):专业:年级:实验课程:Java语言程序设计姓名:学号:实验室号:计算机号:实验时间:指导教师签字:成绩:实验2一、实验目的1.掌握声明二维数组变量,创建二维数组对象,使用二维数组解决实际问题。
2.使用构造方法创建对象,通过对象引用变量访问对象,。
3.封装数据域以便于类的维护。
二、实验要求1.(7.6)编写两个矩阵相乘的方法。
方法头如下:public static double[][] multiplyMatrix(double[][] a, double[][] b)为了是矩阵a能够和矩阵b相乘,矩阵a的列数必须与矩阵b的行数相同。
假设矩阵c是相乘的结果,而a的列数是n,那么每个元素c ij=a i1* b1j + a i2 * b2j+ …+ a in * b nj。
例如,对于两个3×3的矩阵a和b,c有:编写一个测试程序,提示用户输入两个3*3的矩阵,然后显示他们的2.(8.1)创建一个名为Rectangle的类表示矩形,这个类包括:●两个名为width和height的double型数据域,它们分别表示矩形的宽和高。
width和height的默认值都为1。
●创建默认矩形的无参构造方法:Rectangle()。
●一个创建width和height为指定值的矩形的构造方法:Rectangle(double width, double height)。
●一个名为getWidth()的方法返回宽。
●一个名为getHeight()的方法返回高。
●一个名为getArea()的方法返回这个矩形的面积。
●一个名为getPerimeter()的方法返回周长。
实现这个类,编写一个测试程序,提示用户输入两个矩形,创建两个Rectangle对象,然后显示矩形的宽,高,面积和周长。
三、实验原理1.本题通过编写Matrix类实现题目要求。
Matrix类包含三个方法:存储矩阵的方法:public static double[][] inputMatrix()用于打印矩阵的方法:public static double[][] outputMatrix(double[][] x),利用两个for循环来实现输出二维数组。
java实验二试验报告

姓名学号:班级:说明:实验2(类的继承,与接口的实现)1. 编一程序,求两个正整数m、n的最大公约数。
要求程序中有两个方法,分别使用循环和递归,最后在主方法中两次求解并输出最大公约数。
截图:代码:public class gcd {public static void main(String[] args) {int a = 6, b = 9;System.out.printf("two nums:%d %d\n", a, b);System.out.println("递归: " + gcd1(a, b));System.out.println("辗转相除: " + gcd2(a, b));}public static int gcd1(int m, int n){return m % n == 0 ? n : gcd1(n, m%n);}public static int gcd2(int m, int n){while(n != 0){int t = m;m = n;n = t % n;}return m;}}2. 使用类编写程序(在程序中定义类,然后在主方法中创建类的对象,并调用该类中的方法,观察所得结果。
)截图:代码:public class Date {public static void main(String[] args) {Date d = new Date();System.out.println(d);d.setYear(2011);d.setMonth(10);d.setDay(3);System.out.println(d);}public Date(){}public Date(int y, int m, int d){year = y; month = m; day = d;}public void setYear(int new_year){ this.year = new_year;} public void setMonth(int m){ this.month = m; }public void setDay(int d){ this.day = d; }public String toString(){return new String("" + year + "/" + month + "/" + day);}public int year = 2000, month = 1, day = 1;}3. 编写一个包含圆类的程序,并为圆类设计几个构造方法,编译并运行它。
JAVA实验报告Y.Daniel Liang第二次实验

2014-2015学年第一学期实验报告课程名称:Java SE 平台技术实验名称:JA VA编程(基础练习)姓名:学号:成绩:指导教师:日期:目录一、实验目的 (3)二、实验内容 (3)2.1 构建一个继承类。
(3)2.2 抽象类和接口的使用 (3)2.3 图像类编程和事件驱动程序。
(3)三、实验环境 (3)四、实验结果 (3)4.1构建继承类 (3)4.2抽象类和接口的使用 (3)4.3 事件驱动程序 (3)五、附录 (4)5.2 设计方案 (4)5.1构建继承类 (4)5.2抽象类和接口的使用 (4)5.3 事件驱动程序 (4)5.2 设计方案 (4)5.1构建继承类 (4)5.2抽象类和接口的使用 (4)5.3 事件驱动程序 (4)5.3 算法 (4)5.3.1 三角形继承类 (4)5.3.2 抽象类与接口 (5)5.3.3 画出小车 (5)5.4. 设计图 (6)5.4.1 三角形类UML设计图 (6)5.4.2.1 Colorable接口UML设计图 (7)5.4.2.2 CompareTo与Clone接口UML设计图 (8)5.4.3 小车UML设计图 (9)5.5 仿真结果 (9)5.5.1构建继承类 (9)5.5.2抽象类和接口的使用 (9)5.5.3 事件驱动程序 (10)5.6 调试心得 (10)5.6.1 错误分析 (10)5.6.2 心得与收获 (10)一、实验目的通过使用JA V A语言进行基本程序的开发,掌握JA V A通用IDE,练习类的封装使用、JA V A基本类库的使用、利用UML进行简单建模。
二、实验内容2.1 构建一个继承类。
2.2 抽象类和接口的使用2.3 图像类编程和事件驱动程序。
三、实验环境Eclipse、Win 8.1四、实验结果4.1构建继承类输出了三角形的三边长,面积,周长。
4.2抽象类和接口的使用4.2.1执行Colorable接口,输出了一条how to color的信息4.2.2执行Comparable 和Cloneable接口,输出了创建的五边形和克隆五边形的周长和面机的信息。
java实验2实验报告

reader=new Scanner(System.in); standard=reader.nextLine(); }while(!"no".equals(standard)); } } 四、运行结果与测试分析 1.程序分析: 首先,在 TestException 这个类中除了 main 方法和一个无参数构造函数之外,还有另外 3 个方法:testEx()、testEx1()和 testEx2()。它们的返回值都是布尔型,且都可能抛出异 常。程序从 main 方法开始执行,首先创建了一个 TestException 类的对象 testException1, 然后进入 try 语句块,用对象 testException1 调用函数 testEx,程序开始执行 testEx 函 数的函数体。在函数 testEx 的 try 块中调用了函数 testEx1,于是又转向执行 testEx1 的 函数体,但在它的 try 块中又调用了 testEx2(),于是程序转向执行 testEx2 的函数体。 在 testEx2 的 try 块中的 for 循环中,前两次循环正常执行,分别输出 i=2 和 i=1,但第 三次循环时出错(出现了除数 i 为 0 的情况),抛出异常并被本函数中的 catch 语句捕获, 输出“testEx2,catch exception”,把 ret 的值赋成 false,并抛出原异常,但在离开本 函数之前还要执行 finally 中的语句,于是输出“testEx2,finally; return value=false” 并返回 ret 的值 false,由于 finally 语句中使用了 return 语句,所以导致异常丢失,接 着程序返回 testEx2 的调用者 testEx1 中,由于 testEx2 的返回值为 false,故 testEx1 中的 ret 为 false,if 语句条件为真,返回 false,但在离开 testEx1 之前,要执行 finally 中的语句,于是输出“testEx1,finally; return value=false”并返回 ret 的值 false (由于 finally 语句中使用了 return 语句,所以 try 区域中 return 语句的返回值被覆盖)。 流程转到 testEx 中,由于 testEx1 返回 false,故 testEx 中的 ret 为 false,接着执行 finally 中的语句,输出“testEx,finally;return value=false”并返回 ret 的值 false。 接着流程返回到 main 函数中,程序正常结束。运行结果截图如下:
Java实验二实验报告

本科学生实验报告(二)姓名学院计算机科学学院专业计算机科学与技术班级实验课程名称Java面向对象设计试验时间2012年10 月14日指导教师及职称实验成绩开课时间2012—2013学年第一学期实验管理中心印制实验题目类与对象小组合作是○否⊙姓名班级学号一、实验目的1、熟悉Java面向对象程序设计的基本思想。
2、掌握类与对象的定义及使用方法。
3、掌握package语句与import语句的用法。
4、掌握java 继承中父类及其子类的定义方法。
5、掌握子类重写父类同名方法的方法。
6、掌握用法。
二.实验环境JDK1.6和Eclipse3.4.1开发环境三、实验内容与步骤一、分别定义三角形、梯形和圆形类,要求每个类中包含构造方法、求周长及面积的方法1、程序代码如下class Trangle {double sideA,sideB,sideC,area,length;boolean boo;public Trangle(double a,double b,double c){sideA=a;sideB=b;sideC=c;//参数a,b,c分别赋值给sideA,sideB,sideCif(a+b>c&&a+c>b&&c+b>a) //a,b,c构成三角形的条件表达式{boo=true; //给boo赋值。
}else{boo=false; //给boo赋值。
}}double getLength(){if(boo){length=sideA+sideB+sideC;return length;}else{System.out.println("不是一个三角形,不能计算周长");return 0;}//方法体,要求计算出length的值并返回}public double getArea(){if(boo){double p=(sideA+sideB+sideC)/2.0;area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC)) ;return area;}else{System.out.println("不是一个三角形,不能计算面积");return 0;}}public void setABC(double a,double b,double c){sideA=a;sideB=b;sideC=c; //参数a,b,c分别赋值给sideA,sideB,sideCif(a+b>c&&a+c>b&&c+b>a) //a,b,c构成三角形的条件表达式{boo=true; //给boo赋值。
《Java语言程序设计》实验报告二

《Java技术》实验报告—实验(二)实验室:C207 2018 年10 月13日6.以'R'开头的事务表示这是一个到货单记录,在'R'后面是Item number和它的数量Quanlity。
处理一条到货单意味着增加库存中相应货物的数量(增加的数量=到货单中的数量)。
注意:如果在Transactions.txt文件中,到货单出现在发货单之后,到货单中的货物数量可以用来填补发货单中的数量(可以理解成在Transactions.txt中,优先处理到货单)。
7.以'A'开头的事务表示向库存中增加一种新的货物(即这种货物以前库存中没有),在'A'后面是Item number,供应商supplier以及货物的描述description。
处理一个新增货物记录意味着向库存中增加一个数量Quantity为0的新的Item。
你可以假设在一个Transactions.txt 中,新增货物记录总是出现在第一个到货单之前。
8.以'D'开头的事务表示从库存中删除一种货物,在'D'后面是Item号。
删除操作总是在所有的事物处理之后才被处理,以保证对于可能出现的同一种货物的发货单的操作能在删除之前被正确处理。
如果要删除的某种货物的库存量Quantity不为0的话,系统应该向Errors.txt记录出错信息。
9.文件Shipping.txt中的每一行代表给某一客户的发货信息。
Shipping.txt中的每一行分别是客户编号、Item号、货物数量,它们之间用tab键分隔。
如果发货单中有两条客户编号和Item 编号一样的记录,在Shipping.txt中应该将这两条发货信息合并(即将它们的数量相加)。
10.Errors.txt文件包含未发送的发货记录和库存量大于0的删除记录。
Errors.txt每一行包含Custom编号、Item编号以及发货单上的数量Quantity。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
java实验报告实验题目运用JavaFx实现时钟动画学生姓名指导教师学院专业班级完成时间2014年12目录一、实验目的 (3)二、实验开发环境和工具 (3)三、实验内容 (3)四.实际简要描述: (3)五.程序清单 (4)六.结果分析 (10)七.调试报告 (11)八.实验心得 (11)一、实验目的1.了解和掌握JavaFx动画基本概念和相关用法二、实验开发环境和工具可以在Linux或者Windows操作系统上搭建开发环境,可使用集成开发环境Eclipse,使用Java语言,工具包使用JDK1.8。
三、实验内容基于JavaFx画出如下所示可动态变化的时钟。
要求按‘start’按钮可启动时钟,按‘stop’按钮可让时钟暂停。
时钟初始时显示当前时间并开始动态变化。
四.实际简要描述:1.新建一个动态时针EventHandler<ActionEvent>eventHandler = e -> {clock.setCurrentTime(); // 设置时钟时间};2.建立一个动画使时钟走起来Timeline animation = new Timeline(newKeyFrame(lis(1000), eventHandler));animation.setCycleCount(Timeline.INDEFINITE);animation.play(); // 开始动画3.建立按钮HBoxhbox=new HBox();//新建HBOX布局hbox.setSpacing(20);hbox.setLayoutX(310);hbox.setLayoutY(520);Start = new Button("Start");//建立start按钮Start.setPrefSize(80, 40);Stop = new Button("Stop");//建立stop按钮Stop.setPrefSize(80, 40);hbox.getChildren().addAll(Start,Stop);//将按钮加入HBOX getChildren().add(hbox);五.程序清单importjavafx.application.Application;importjava.util.Calendar;importjava.util.GregorianCalendar;yout.Pane;importjavafx.scene.paint.Color;importjavafx.scene.shape.Circle;importjavafx.scene.shape.Line;importjavafx.scene.text.Text;importjavafx.application.Application;importjavafx.stage.Stage;importjavafx.animation.KeyFrame;importjavafx.animation.Timeline;importjavafx.event.ActionEvent;importjavafx.event.EventHandler;importjavafx.scene.Scene;importjavafx.util.Duration;classClockPane extends Pane {privateint hour;privateint minute;privateint second;private double w = 250, h = 250;//设置pane的长宽public ClockPane() {//每次打开时,定到当前时间setCurrentTime();}public ClockPane(int hour, int minute, int second) {//用特殊时间初始化时钟this.hour = hour;this.minute = minute;this.second = second;paintClock();}public intgetHour() {//返回小时return hour;}public void setHour(int hour) {//更新小时this.hour = hour;paintClock();}public intgetMinute() {//返回分钟return minute;}public void setMinute(int minute) {//更新分钟this.minute = minute;paintClock();}public intgetSecond() {//返回秒return second;}public void setSecond(int second) {//设置秒this.second = second;paintClock();}public double getW() {return w;}public void setW(double w) {this.w = w;paintClock();}public double getH() {return h;}public void setH(double h) {this.h = h;paintClock();}public void setCurrentTime() {//为时钟建立当前时间Calendar calendar = new GregorianCalendar();this.hour = calendar.get(Calendar.HOUR_OF_DAY);this.minute = calendar.get(Calendar.MINUTE);this.second = calendar.get(Calendar.SECOND);paintClock(); // 建立时间后重新画一个时钟}private void paintClock() {//初始化时钟参数doubleclockRadius = Math.min(w, h) * 1.0 * 0.6;doublecenterX = w / 2;doublecenterY = h / 2;//开始画圆Circle circle = new Circle(centerX, centerY, clockRadius); circle.setFill(Color.GREEN);circle.setStroke(Color.BLACK);Text t1 = new Text(centerX - 5, centerY - clockRadius + 12, "12");Text t2 = new Text(centerX - clockRadius + 3, centerY + 5, "9");Text t3 = new Text(centerX + clockRadius - 10, centerY + 3, "3");Text t4 = new Text(centerX - 3, centerY + clockRadius - 3, "6");//开始画秒针doublesLength = clockRadius * 0.8;doublesecondX = centerX + sLength *Math.sin(second * (2 * Math.PI / 60));doublesecondY = centerY - sLength *Math.cos(second * (2 * Math.PI / 60));Line sLine = new Line(centerX, centerY, secondX, secondY); sLine.setStroke(Color.YELLOW);// 开始画分针doublemLength = clockRadius * 0.65;doublexMinute = centerX + mLength *Math.sin(minute * (2 * Math.PI / 60));doubleminuteY = centerY - mLength *Math.cos(minute * (2 * Math.PI / 60));Line mLine = new Line(centerX, centerY, xMinute, minuteY); mLine.setStroke(Color.BLUE);// 画时针doublehLength = clockRadius * 0.5;doublehourX = centerX + hLength *Math.sin((hour % 12 + minute / 60.0) * (2 * Math.PI / 12)); doublehourY = centerY - hLength *Math.cos((hour % 12 + minute / 60.0) * (2 * Math.PI / 12));Line hLine = new Line(centerX, centerY, hourX, hourY); hLine.setStroke(Color.PINK);getChildren().clear();getChildren().addAll(circle, t1, t2, t3, t4, sLine, mLine, hLine);}}public class ClockAnimation extends Application {// 重载start方法public void start(Stage primaryStage) {ClockPane clock = new ClockPane(); // 新建一个时钟// 新建一个动态时针EventHandler<ActionEvent>eventHandler = e -> {clock.setCurrentTime(); // 设置时钟时间};// 建立一个动画使时钟走起来Timeline animation = new Timeline(newKeyFrame(lis(1000), eventHandler));animation.setCycleCount(Timeline.INDEFINITE);animation.play(); // 开始动画// 新建场景Scene scene = new Scene(clock, 250, 250);primaryStage.setTitle("***DynamiDisplayTime***"); // 设置舞台标题primaryStage.setScene(scene); // 将场景放在舞台中primaryStage.show(); //显示舞台}public static void main(String[] args) {launch(args);}}六.结果分析初始的设计中,忽略了start和stop两个按钮,这涉及了动态的指针走动,输出的效果如下:后来,加进去了start,stop这两个按钮后,在建立这两个按钮对时钟控制的程序时,出现了问题,起先不理解事件驱动编程,后来看了也不是很懂,于是,建立了两个按钮。