JAVA实验四
java实验报告4
实验4 Java 语言面向对象基础编程一.实验目的(1)通过编程和上机实验理解Java语言是如何体现面向对象编程基本思想(2)如何创建类和对象二、实验要求1、编写一个体现面向对象思想的程序;2、编写一个创建对象和使用对象的方法的程序;3、编写体现构造方法重载的程序;三.实验内容1、定义类创建类对象设计类来描述真实客观世界中的事物,使用类的成员变量来表示事物的属性和状态,使用类的成员方法来提供对成员变量的访问或修改(1)程序功能:设计一个用来描述汽车的类,使用类的非静态成员变量来表示汽车的车主姓名、当前的速率和当前方向盘的转向角度,使用类的非静态成员方法来表示改变汽车的速率和停车两个操作。
源代码:(自己编写)创建类的对象,使用对象的方法(类的非静态方法)来访问或修改对象的变量(类的非静态变量)(1)创建上面第一步的类的对象,在调用类的构造函数时指定对象的变量的初始值,以后再使用对象的方法来访问或修改对象的变量的值。
源代码:2、构造方法重载构造方法的名称和类同名,没有返回类型。
尽管构造方法看起来和一般的成员方法没有差别,但它不是方法,也不是类的成员。
因此,构造方法不能直接调用,只能由new 操作符调用。
构造方法对于类是十分重要的,对象的初始化任务要靠构造方法来完成。
重载构造方法的目的是提供多种初始化对象的能力,使程序员可以根据实际需要选用合适的构造方法来初始化对象。
源代码如下:class RunDemo {private String userName, password;在该处编写不带参数的构造方法在该处编写带一个参数的构造方法在该处编写带两个参数的构造方法}public class EXP2 {public static void main(String[] args) {//使用不同的构造方法进行对象的初始化}}3、调用方法时参数传递的练习在Java 中,方法中的参数传递可以分为传值调用或对象方法调用等方式。
实验四 Java知识
实验四java知识本实验目的是练习如何创建Java 的基本语法,以及面向对象的知识,为后续的实验作好准备工作。
【课堂练习】一(1)对数组排序【实验效果】根据实验要求,您必须在浏览器的地址栏中输入:Tomcat服务器的IP地址和端口号,如:http://localhost:8080/sort.jsp【课堂练习】Java面向对象思想课堂练习——包创建和引用案例:新建Project项目,在该项目中创建aa.bb包,然后再引入java.util包中的Date类,并创建ShiJian类,练习包的创建和引用。
课堂练习——相同包之间的访问案例:在已经建立Project项目中创建mr.bbb包,然后在该包中创建Test和ImpTest两个类,测试同包之间类的访问。
课堂练习——不同包中类之间的访问案例:在已经建立Project项目中创建mr.aaa包和mr.zzk包,然后分别在包中创建Exam 和ImpExam两个类,测试不同包之间类的访问。
课堂练习——final变量案例:在已经建立Project项目中创建mingri包,并在该包中创建T1类,在该类中定义一个final变量,然后再主方法中创建T1类的实例,并测试能否改变final变量的值。
课堂练习——final方法案例:在已创建的项目Project的包mingri中创建T1类的之类ExT1,然后再ExT1类中测试是否能重写父类T1中的final方法。
课堂练习——继承性案例:在项目的包aaa中创建A和B两个类,使类B是类A的子类,然后在子类B中创建B的实例,并通过该实例分别调用类A和类B的方法,掌握继承的原理。
课堂练习——抽象类案例:在项目的包aaa中创建抽象类Example及其子类SubExample,在抽象类Example 中分别定义一个成员方法和一个抽象方法,并在子类中进行测试。
课堂练习——权限访问案例:在项目的包aaa中创建类Exm,在该类中分别定义4种权限修饰符的成员变量并附初值,然后在主方法中创建类的实例,并分别输出这4个成员变量的值,测试上述4种权限修饰符的成员变量在当前类中的可见性。
Java实验指导4继承与多态
《Java程序设计》实验指导实验四继承与多态一、实验目的:1.掌握类的继承方法。
2.掌握变量的继承和覆盖。
3.掌握方法的继承、重载和覆盖。
4.了解接口的实现方法。
二、实验原理新类可从现有的类中产生,并保留现有类的成员变量和方法,并可根据需要对它们加以修改。
新类还可添加新的变量和方法。
这种现象就称为类的继承。
当建立一个新类时,不必写出全部成员变量和成员方法。
只要简单地声明这个类是从一个已定义的类继承下来的,就可以引用被继承类的全部成员。
被继承的类称为父类或超类(superclass),这个新类称为子类。
Java 提供了一个庞大的类库让开发人员继承和使用。
设计这些类是出于公用的目的,因此,很少有某个类恰恰满足你的需要。
你必须设计自己的能处理实际问题的类,如果你设计的这个类仅仅实现了继承,则和父类毫无两样。
所以,通常要对子类进行扩展,即添加新的属性和方法。
这使得子类要比父类大,但更具特殊性,代表着一组更具体的对象。
继承的意义就在于此。
语法格式:类访问限定符子类名extends 父类名{……}三、实验内容及要求:1. 定义一个接口(ShapeArea),其中包含返回面积的方法(getArea)。
定义一个矩形类(Rectangle),派生出一个正方形类(Square),再定义一个圆类(Circle),三者都要求实现接口ShapeArea,自行扩充成员变量和方法。
在主方法中建一数组,数组中放入一些上述类型的对象,并计算它们的面积之和。
2. 运行下面的程序,理解成员变量的继承与隐藏,方法的覆盖与重载。
class A{int sum,num1,num2;public A(){num1=10;num2=20;sum=0;}void sum1(){sum=num1+num2;System.out.println("sum="+num1+"+"+num2+"="+sum);}void sum2(int n){num1=n;sum=num1+num2;System.out.println("sum="+num1+"+"+num2+"="+sum);}}class B extends A{int num2;public B(){num2=200;}void sum2(){sum=num1+num2;System.out.println("sum="+num1+"+"+num2+"="+sum);}void sum2(int n){num1=n;sum=num1+num2;System.out.println("sum="+num1+"+"+num2+"="+sum);}void sum3(int n){super.sum2(n);System.out.println("sum="+num1+"+"+num2+"="+sum);}}public class test{public static void main (String arg[]){B m=new B();m.sum1();m.sum2();m.sum2(50);m.sum3(50);}}。
实验报告 Java输入、输出和异常处理
实验四Java输入、输出和异常处理一、实验目的1.了解I/O流的使用;2.掌握常见的输入/输出流类及其主要方法。
3.熟悉S y s t e m类,掌握标准输入/输出。
4.学会利用Tr y-c a t c h-f i n a l l y语句来捕获和处理异常;5.掌握自定义异常类的方法。
二、实验要求1.使用标准数据流的应用程序。
2.使用文件输入输出流的应用程序。
3.通过编程理解系统异常处理的机制和创建自定义异常的方法。
三、实验内容(一)使用标准数据流的应用程序标准数据流指在字符方式下(如D O S提示符)程序与系统进行输入输出的方式,键盘和显示器屏幕是标准输入输出设备,数据输入的起点为键盘,数据输出的终点是屏幕,输出的数据可以在屏幕上显示出来。
1.程序功能:将键盘上输入的字符在屏幕上显示出来。
2.编写S Y4_1.j a v a程序文件,源代码如下:c l a s s S Y4_1{p u b l i c s t a t i c v o i d m a i n(S t r i n g[]a rg s)t h r o w s j a v a.i o.I O E x c e p t i o n {b y t e b u ff e r[]=n e w b y t e[10];S y s t e m.o u t.p r i n t l n("从键盘输入不超过10个字符,按回车键结束输入:");i n t c o u n t=S y s t e m.i n.r e a d(b u f f e r);//读取输入的字符并存放在缓冲区b u ff e r中S y s t e m.o u t.p r i n t l n("保存在缓冲区b u ff e r中元素的个数为:"+c o u n t);S y s t e m.o u t.p r i n t l n("b u f f e r中各元素的值为:");f o r(i n t i=0;i<c o u n t;i++){S y s t e m.o u t.p r i n t(""+b u ff e r[i]);//在屏幕上显示b u ff e r 元素的值}S y s t e m.o u t.p r i n t l n();S y s t e m.o u t.p r i n t l n("输出b u ff e r字符元素:");S y s t e m.o u t.w r i t e(b u ff e r,0,b u f f e r.l e n g t h);}}3.编译、运行S Y4_1.j a v a文件。
Java程序设计实验报告4
课程实验报告
的文件对象,然后对str中的每个对象调用isFile()方法判断是否是文本文件,并计数输出
(4)在外层使用for循环对每个文本文件遍历行数
(5)在内层创建FileReader类的对象reader1和BufferedReader类的对象reader2,设置行数rows=0,分别读每个文本文件计算行数
调试过程及实验结果1. 2.
总结通过第一个实验我熟悉了BufferedReader、BufferedWriter等流类的相关使用方法,掌握了向文件中读写数据的基本步骤;通过第二个实验我掌握了Java File类相关方法的调用和使用,熟悉对文本文件和非文本文件基本方法的使用。
附录(手抄源程序清单,对关键步骤需要添加注释,写在报告背面即可,无需附页,严禁打印)
*注意:
--雷同无效,禁止抄袭;
--A4纸单面打印,左侧装订,2个钉;
--以班为单位,各班负责人收齐并按学号由小到大顺序排序后上交;。
Java实验报告04
实验四:接口
实验目的:掌握接口的定义及实现,掌握面向接口的编程思想
实验内容:
1、求任意柱体的体积(面向接口的编程思想)
2、动物园动物管理:动物们都会吃东西,但不同的动物吃的东西不一样;动物都会叫,但不同动物的叫声不一样;有的动物需要表演,有的动物不能表演;有的动物允许游客喂食物,有的不能喂食物;
实验步骤:
一.求任意柱体的体积(面向接口的编程思想)
1、工程图
2、实现步骤
创建一个shape包,并在shape包中建立一个IShape接口,代码如下:
创建一个cylinder包,并在包中建立Cylinder类,代码如下:
建立一个myshape类,并在其中建立两个类,Circle和Rectangle,Circle代码如下:
Rectangle类中代码如下:
建立一个text包,在此包中建立一个Text类,代码如下:
3、结果截图
二.动物园动物管理问题
1、工程图
2、实现步骤
建立一个myinterface包,并在该包中建立两个接口:IFeed,IPerformence,IFeed 接口代码如下:
,IPerformence接口中代码如下:
建立一个myclass包,在此包中建立三个类:Animal,Elephant,Monkey.
Animal类中代码如下:
Elephant中代码如下:
Monkey类中代码如下:
建立一个text包,并建立一个Text类,代码如下:
3、结果截图。
java实验四
实验四异常类的定义及处理编写程序实现如下功能:生成并捕获到NegativeArraySizeException和IndexOutOfBoundsException类型的异常,并显示捕获到的异常信息。
然后在此基础上生成并捕获到NullPointerException类型的异常,并显示捕获到的异常信息。
实验步骤1) 编写程序实现如下功能:生成并捕获到NegativeArraySizeException和IndexOutOfBoundsException类型的异常,并显示捕获到的异常信息。
然后在此基础上生成并捕获到NullPointerException类型的异常,并显示捕获到的异常信息。
步骤(1):编写一个包含main方法的Application类TestException,然后定义一个方法 void arraySize(){……}生成并捕获NegativeArraySizeException异常。
步骤(2):添加一个方法 void outofBound(){……}生成并捕获IndexOutOfBoundsException 异常。
步骤(3):添加一个方法 void nullPointer(){……}生成并捕获IndexOutOfBoundsException 异常。
步骤(4):在main方法中分别调用以上三个方法。
步骤(5):将文件保存为TestException.java,然后编译、调试应用程序。
步骤(6):将outofBound()方法中捕获异常的语句注释掉,重新编译程序,看看会不会有什么语法错误?如果没错误,执行程序看结果有什么不同?步骤(7):将array方法重新定义为如下形式: void arraySize() throws NegativeArraySizeException{……} 然后修改arraySize方法中捕获NegativeArraySizeException异常的语句执行部分。
java_实验四
武汉工程大学计算机科学与工程学院实验报告[4]一、实验目的1)了解Java.awt包及Swing的新增特性。
2)了解Java系统图形用户界面的基本工作原理和界面设计的步骤。
3)了解图形用户界面的事件响应机制。
4)了解图形用户界面各种常用的基本组件的使用方法及其事件响应。
5)掌握Java常用组件的应用6)掌握图形用户界面各种布局策略的设计与使用二、实验要求1)创建一个简单的图形用户界面。
2)使用Java类库中提供的组件,并添加到图形用户界面中。
3)通过Java事件处理机制,实现与用户的交互信息。
4)练习使用布局管理器5)使用Java类库中提供的组件,并添加到图形用户界面中6)通过Java事件处理机制,实现与用户的交互信息三、实验内容对一个优秀的应用程序来说,良好的图形用户界面是必不可少的。
因为只有通过图形界面,用户才能够与程序友好的交互。
缺少良好的图形用户界面,将会给用户理解和应用程序带来很多不便。
创建一个完整的图形用户界面的应用程序大致流程如下:1)引用需要的包和类。
2)设置一个顶层的容器。
3)根据需要为容器设置布局管理器或使用默认布局管理器。
4)将组件添加到容器内,位置自行设计。
5)为响应事件的组件编写事件处理代码。
下面我们先建立一个简单的图形用户界面,然后通过合适的布局管理器,将各种常用组件添加到图形用户界面中,实现与用户的交互信息。
1. 创建简单的图形用户界面(1)创建简单的 Frame 框架在 AWT 库中,对应于框架的类是 Frame,在 Swing 库中,相应的类是 JFrame。
JFrame 类扩展了 Frame 类。
大部分 ATWT 组件在 Swing 中都有等价的组件,它们在表示形式上差一个“J”。
框架是一个容器,可以在这个容器中放入其他一些图形用户界面组件,如按钮、菜单等,从而组成一个功能完善的程序。
下面的例子是建立一个 Frame 框架,通过这个例子学习如何创建一个简单的图形用户界面。
JAVA程序设计基础实验四
实验报告四一【实验目的】(1)理解异常和异常处理的概念(2)理解异常处理机制二【实验内容】【项目一】理解异常处理机制1.编写以下程序,并编译运行3.使用try{}catch{}final{}结构,捕获并处理异常,在final里中打印输出:public class Ex7_1{public static void main(String[] args){try{String output[]={"The","quick","brown","fox","jumps","over","the","lazy","dog."};int i=0;while(i<12){System.out.print(output[i++]);}}catch(Exception e){System.out.print("haha...");}finally{System.out.println("不管怎样都要执行的语句!");}}}【项目二】完成实验指导书——5.2.4 异常处理(1)程序代码class NoLowerLetter extends Exception{public void print(){System.out.printf("%c",'#');}}class NoDigit extends Exception{public void print(){System.out.printf("%c",'*');}}class People{----------------------------精品word文档值得下载值得拥有----------------------------------------------void printLetter(char c) throws NoLowerLetter{if(c<'a'||c>'z'){NoLowerLetter noLowerLetter=new NoLowerLetter();throw noLowerLetter;}else{System.out.print(c);}}void printDigit(char c) throws NoDigit{if(c<'1'||c>'9'){NoDigit noDigit=new NoDigit();throw noDigit;}else{System.out.print(c);}}}public class ExceptionExample{public static void main (String args[]){People people=new People();for(int i=0;i<128;i++){try{people.printLetter((char)i);}catch(NoLowerLetter e){e.print();}}for(int i=0;i<128;i++){try{people.printDigit((char)i);}catch(NoDigit e){e.print();}}}}(2)运行结果【项目三】使用Thread创建线程,要求及部分源码见附件/线程/1~6.jpgclass Tortoise extends Thread{int sleepTime=0,liveLength=0;Tortoise(int sleepTime,String name,int liveLength){this.sleepTime=sleepTime;this.liveLength=liveLength;setName("乌龟");}public void run(){while(true){liveLength--;----------------------------精品word文档值得下载值得拥有----------------------------------------------System.out.printf("@");try{Thread.sleep(80);}catch(InterruptedException e){}if(liveLength<=0){System.out.printf(getName()+"进入死亡状态\n");return;//结束run()方法的语句;}}}}class Rabbit extends Thread{int sleepTime=0,liveLength;Rabbit(int sleepTime,String name,int liveLength){this.sleepTime=sleepTime;this.liveLength=liveLength;setName("兔子");}public void run(){while(true){liveLength--;System.out.printf("*");try{Thread.sleep(50);}//让线程调用sleep()方法进入中断状态,sleepTime毫秒后线程重新排队,等待CUP资源;catch(InterruptedException e){}if(liveLength<=0){System.out.printf(getName()+"进入死亡状态\n");return;//结束run()方法的语句;}}}}public class ThreadExample{public static void main(String args[]){String s1="兔子",s2="乌龟";Rabbit rabit;rabit=new Rabbit(50,s1,50);//新建线程rabit;Tortoise tortoise;tortoise=new Tortoise(20,s2,70);//新建线程tortoise;rabit.start();//启动线程tortoisetortoise.start();//启动线程rabit;}}【项目四】使用Rannable接口创建线程class Bank implements Runnable{private int money=100;----------------------------精品word文档值得下载值得拥有----------------------------------------------Thread zhang,keven;Bank(){String s1="会计",s2="出纳";zhang=new Thread(this);zhang.setName(s1);keven=new Thread(this);keven.setName(s2);}public void run(){int i=0;//声明一个int类型变量i,初值为0;while(true){if(Thread.currentThread().getName().equals("会计")){i=i+1;money=money+1;System.out.printf("%s将money的值改为%d\t",zhang.getName(),money);System.out.printf("%s的局部变量i=%d\n",zhang.getName(),i);if(i>=6){System.out.printf("%s线程进入死亡状态\n",zhang.getName());return;}try{Thread.sleep(1000);}catch(InterruptedException e){}}else if(Thread.currentThread().getName().equals("出纳")){i=i-1;money=money-1;System.out.printf("\n%s将money的值改为%d\t",keven.getName(),money);System.out.printf("%s的局部变量i=%d\n",keven.getName(),i);if(i<=-6){System.out.printf("%s线程进入死亡状态\n",keven.getName());return;}try{Thread.sleep(1000);}catch(InterruptedException e){}}}}}public class BankExample{public static void main(String args[]){Bank bank=new Bank();bank.zhang.start();bank.keven.start();}}----------------------------精品word文档值得下载值得拥有----------------------------------------------三【实验小结】本次实验是这么课程的第四次实验,通过前几次的实验让我对Java的学习有了更深一步的了解,这次实验主要练习的是线程和异常,仍然主要是利用了类的创建,在做实验的过程中,第一步编译的时候还是会出现许多错误,根据错误的地方提示再一步一步的进行修改。
java实验四对象和类(抽象类、接口与包)
java实验四对象和类(抽象类、接口与包) 实验四对象和类(抽象类、接口与包) 一、实验目的1、熟练掌握抽象类abstract的概念。
2、熟练掌握接口interface的概念。
3、熟练包package的概念以及编译运行的方法。
4、熟练掌握内部类inner class的概念。
5、熟练掌握递归的概念。
6、理解面向对象的程序设计方法。
二、实验内容与要求1(编写求解几何图形(如三角形,矩型,圆,多边型)的周长、面积的应用程序,要求用到继承、多态、抽象类、接口、内部类等面向对象程序设计技术的特点。
程序如下:abstract class Geometric{ //定义抽象类abstract double getPerimter();abstract double getArea(); }interface MY{ //定义接口float getarea();float getperimter();}class sanjiaoxing extends Geometric{ //三角形类继承抽象类private float a;private float b;private float c;sanjiaoxing(float x1,float x2,float x3){a=x1;b=x2;c=x3;}double getPerimter(){return a+b+c;}double getArea(){float p=(a+b+c)/2;return Math.sqrt(p*(p-a)*(p-b)*(p-c));}}class yuanxing extends Geometric{ //圆类继承抽象类private float radius;yuanxing(float a){radius=a;}double getPerimter(){double p;p=2*3.14f*radius;return p;}double getArea(){return 3.14f*radius*radius;}}class juxing implements MY{ //矩形类实现接口private float height;private float width;juxing(float a,float b){height=a;width=b;}public float getperimter(){return 2*(width+height);}public float getarea(){return width*height;}}class abc{public static void main(String args[]){ sanjiaoxing obj1=new sanjiaoxing(3,4,5); System.out.println("当三角形三边是3,4,5时:"); System.out.println("边长是:"+obj1.getPerimter()); System.out.println("面积是:"+obj1.getArea()); yuanxing obj2=new yuanxing(4);System.out.println("当圆的半径是4时:");System.out.println("周长是:"+obj2.getPerimter());System.out.println("面积是:"+obj2.getArea());juxing obj3=new juxing(3,4);System.out.println("当矩形长和宽是3,4时:");System.out.println("周长是:"+obj3.getperimter());System.out.println("面积是:"+obj3.getarea());}}结果如下:, 出现的问题1:需要定义抽象类和接口,并用三角形、矩形和圆形来实现里边定义的方法。
Java实验四-实验报告
Java实验四-实验报告实验四类和对象;类的继承和派生;多态性;接口;构造器应用一、实验目的1、掌握类与对象的关系;2、掌握类的定义;3、掌握对象的声明及使用;4、掌握构造方法的概念及调用时机;5、掌握构造方法的重载;6、掌握匿名对象的使用。
二、实验学时2学时三、实验类型验证性实验四、实验需求1、硬件每位学生配备计算机一台2、软件Windows 7操作系统,JDK,eclipse,MySQL 3、网络无4、工具无五、实验理论与预备知识1、类与对象的关系;2、类的定义;3、对象的声明及使用;4、构造方法的概念及调用时机;5、构造方法的重载;6、匿名对象的使用。
六、实验内容与结果1、编写一个应用程序,该程序中有3个类:Trangle、Leder和Circle,分别用来刻画“三角形”、“梯形”和“圆形”。
//三角形类class Trangle {double sidea,sideb,sidec,sjxzc,sjxmj;boolean boo;public Trangle(double a,double b,double c){sidea=a;sideb=b;sidec=c;if(a+b>c && a+c>b && b+c>a){boo=true;}else{boo=false;}}double getlength(){double length;length=sidea+sideb+sidec;return length;}public double getarea(){if(boo){double area;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;}}}//梯形类class Laderdouble txsd,txxd,txhigh,txarea;Lader(double a,double b,double c){txsd=a;txxd=b;txhigh=c;}double getarea(){double area;area=(txsd+txxd)*txhigh/2.0; return area;}}//圆形类class Circle{double ybj,yzc,yarea;Circle(double r){ybj=r;}double getarea(){double area;area=3.14*ybj*ybj;return area;}double getlength(){double length;length=2*3.14*ybj;return length;}void setybj(double newybj) {ybj=newybj;}double getybj(){return ybj;}}public class one {public static void main (String args[]){double length,area;Circle circle=new Circle(5);Trangle trangle=new Trangle(3,4,5); Lader lader=new Lader(3,4,6);length=circle.getlength();System.out.println("圆的周长:"+length); area=circle.getarea();System.out.println("圆的面积:"+area); length=trangle.getlength();System.out.println("三角形的周长:"+length); area=trangle.getarea();System.out.println("三角形的面积:"+area); area=lader.getarea();System.out.println("梯形的面积:"+area); trangle=new Trangle(1,1,3);area=trangle.getarea();System.out.println("三角形的面积:"+area); length=trangle.getlength();System.out.println("三角形的周长:"+length); }}2、编写一个公司员工类。
JAVA实验四 异常处理
实验四异常处理一、实验目的1、掌握异常的概念和 Java 异常处理机制。
2、掌握异常的定义、抛出和捕捉处理。
二、实验内容与要求1、仔细读下面的JA V A语言源程序,自己给出程序的运行结果import java.io.*;public class Ch31 {public static void main(String args[])throws IOException {int[] ko=new int[15];int n,a;String x;BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter an integer:");x=keyin.readLine();n=Integer.parseInt(x);try {a=110/n;ko[15]=100;System.out.println("此描述无法执行!");} catch(ArithmeticException e){System.out.println("除数为0的错误");} catch(ArrayIndexOutOfBoundsException f) {System.out.println("数组索引值大于数组长度的错误!");}System.out.println("执行完catch的描述!!!");}}2.运行下面的程序,自己给出程序的运行结果。
import java.io.*;public class Ch32{public Ch32(){try{int a[] = new int[2];a[4] = 3;System.out.println("After handling exception return here?");}catch(IndexOutOfBoundsException e){System.err.println("exception msg:" + e.getMessage());System.err.println("exception string:" + e.toString());e.printStackTrace();}finally{System.out.println("-------------------");System.out.println("finally");}System.out.println("No exception?");}public static void main(String args[]){new Ch32 ();}}3、创建自定义异常类程序文件LX33.java,自己给出程序的运行结果。
java实验四
实验四字符串操作一实验目的1.掌握字符串的处理方法。
2.掌握String和StringBuffer的区别。
3. 熟悉文件处理及输入输出流的相关方法。
二知识要点1.String类(1)创建String类对象的两种方式。
(2)String类创建的字符串对象的内容不能改变。
(3)String类的常见方法,见表4-1。
方法功能boolean equals(Object obj) 当前串与参数串的内容进行比较boolean equalsIgnoreCase(String s2)忽略字母的大小写,比较当前串和参数串的内容int length()返回字符串长度String trim()返回去除前导空格和尾部空格的字符串int indexOf(int ch, int fromIndex))从formIndex位置开始往后查找字符串中的字符ch的首次出现位置。
int indexOf(String s, int fromIndex))从formIndex位置开始往后查找字符串中的子串s的首次出现位置。
char charAt(int index) 从串中获取指定位置的字符String substring(int begin, int end)根据始末位置从串中获取子串String[] split(String regex) 按照分隔符将串分成若干子串String replace(char ch1,char ch2) 将字符串中所有ch1字符换为ch2 String toLowerCase() 将字符串中的所有大写字母改成小写字母String toUpperCase() 将字符串中的所有小写字母改成大写字母表4-1 String类的常见方法2. StringBuffer类(1)使用构造函数创建StringBuffer对象(2)StringBuffer类创建的字符串可以被修改,可以对串的内容进行增、删、改操作。
(3)StringBuffer的常用方法,见表4-2。
(4) 实验四 继承与多态
Java语言使用extends关键字在两个类之间建立这种类似与父子血缘关系的“继承”关系:在定义类时,使用extends来指明它的父类。
值得注意的是,Java中的继承只能是单继承即单根继承。
语法格式:
class SubClass extens SuperClass{//只能有一个父类
……
System.out.pri!~”);
}
public void fB(){
System.out.println(“method fB() from class B!”);
fA();
System.out.println(“x is”+ x);
}
}
public class Test{
2)什么时候需要使用super语句来显式调用父类构造?
(二)多态
多态是面向对象编程的重要技巧,它也是面向对象的重要特征之一。多态的本意是“同一个操作,不同的行为”,也就是使用同一个方法名,运行的实际是不同的方法。在Java语言中,多态主要通过方法的重载(Overloading)和重写(Overriding)实现。
public static void main(String[] args){
B b;
System.out.println(“====类已加载完毕=====”);
b = new B(10);
b.fB();
}
}
问题:
1)请结合运行结果分析Java中创建对象过程。(分析类的不同区域的运行前后次序,提示:类加载时或创建对象时,父类静态成员、实例成员、构造方法和子类静态成员、实例成员、构造方法的执行先后次序)
当程序运行并通过向上转型后的对象来调用方法时,Java会根据实际的对象类型来调用实际类型所对应的方法。这种运行时的多态,我们也成为动态绑定。
实验四,Java,实验报告
实验四类和对象实验目的(1)掌握类的定义和方法调用。
(2)理解静态和非静态成员变量的区别。
(3)掌握创建类实例的方法。
(4)掌握类的继承机制。
(5)熟悉类中成员变量和方法的访问控制。
(6)熟悉方法的多态性。
实验内容(1)设计一个Dog类,有名字、颜色和年龄属性,定义够着方法初始化这些属性,定义输出方法show()显示信息。
编写应用程序使用Dog类。
(2)编写一个学校类,其中包含成员变量line(录取分数线)和对该变量进行设置和获取的方法。
编写一个学生类,它的成员变量有考生的name(姓名)、id(考号)、total(综合成绩)、sports(体育成绩)。
它还有获取学生的综合成绩和体育成绩的方法。
编写一个录取类,它的一个方法用于判断学生是否符合录取条件。
其中录取条件为:综合成绩在录取分数线之上,或体育成绩在96以上并且综合成绩大与300。
在该类的main()方法中,建立若干个学生对象,对符合录取条件的学生,输出器信息及“被录取”。
(3)设计一个表示二维平面上点的类Point,包括表示位置的protected类型的成员变量x 和y,获取和设置x和y值得public方法。
实际一个表示二维平面上的类Circle,它继承自类Point,还包括表示半径的protected类型的成员变量r、获取和设置r值得public方法、计算圆面积的public 方法。
(4)设计一个表示圆柱体的类Cylinder,它继承自类Circle,还包括表示圆柱体高的protected 类型的成员变量h、获取和设置h值得public 方法、计算圆柱体体积的public 方法。
(5)建立若干个Cylinder对象,输出其轴心位置坐标、半径和高及其体积的值。
实验要求(1)Dog类的构造方法带有3个参数,分别用于接收名字、颜色和年龄。
(2)学生类的构造方法带有4个参数,分别用于接收学生的姓名、考号、综合成绩和体育成绩。
学校类仅包含静态成员变量和方法。
Java实验报告4
(3)如果将B.java去掉import语句,并在使用包中的类时带上完整的路径,运行时结果正确。
(4)把A.java程序的相关部分作如下修改进行测试,编译运行。
System.out.println("从类A中访问Clock hour="+c.hour);
System.out.println("从类A中访问Clock minute="+c.minute);
System.out.println("从类A中访问Clock second="+c.second);
·ClassNotFoundException:具有指定名字的类或接口没有被发现。
·CloneNotSupportedException:克隆一个没有实现Cloneable接口的类。
·IllegalAccessException:试图用给出了完整的路径信息的字符串加载一个类,但是当前正在执行的方法无法访问指定类,因为该类不是public类型或在另一个包中。
int n,a;String x;
BufferedReader keyin=
new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter an integer");
x=keyin.readLine();
n=Integer.parseInt(x);
Java语言实验4 子类与继承
System.out.println("a of son's super is :" +son.getA());
son.miner();
System.out.println("a of son is :"+son.a);
System.out.println(“加toString()输出:”+d.toString());
}
}
(2)编译运行程序,观察结果。
(3)实验报告
运行结果:
思考:为什么两次输出都是同样结果。
Demo有父类吗?
答:因为没有指定父类,就默认继承Object类,即默认调用对象的toString()方法。所以两次输出同样的结果。
B(int a,int b)
{
i=a;
k=b;
}
int multiply()/**重写了父类的multiply()方法*/
{
return i*j*k;
}
}
步骤三:创建并运行应用程序。
public class LX
{
public static void main(SFra bibliotekring a[])
{
B subO=new B(6,9);
System.out.println(“姓名:”+stu.getName()+”,年龄:”+stu.getAge()
+”,学校:”+stu.getSchool());
}
}
(2)实验报告
运行结果:
java实验四实验报告
}
编译:javac TwoThread.java
解释执行:java TwoThread
运行后结果:
1、用创建Thread类的子类的方法实现多线程:
源程序:
class FruitThread extends Thread
{
public FruitThread (String str)
{
super(str);
}
public void run()
{
for(int i=0;i<5;i++)
{
System.out.println(i+""+getName());
T2.start();
}
}
编译:javac C.java
解释执行:java RunThread
运行后结果:
c源程序:
class run1Thread implements Runnable
{
public void run()
{
System.out.println("This is Runnable");
outputClass(String s){
name=s;
}
public void run(){
for(int i=0;i<3;i++){
System.out.println(name);
Thread.yield();
}
}
}
class runThreads{
public static void main(String args[]){
try
{
sleep((int)(Math.random()*1000));
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
}
}
}
public class Date{
public static String createMonth(int month)
{
String a[]=new String[12];
switch (month)
{
caபைடு நூலகம்e 1:
return a[0]="Jan";
case 2:
return a[1]="Feb";
case 3:
return a[2]="Mar";
case 4:
return a[3]="Apr";
case 5:
return a[4]="May";
case 6:
return a[5]="Jun";
case 7:
return a[6]="Jul";
System.out.print("Please input the month: ");
int i=sc.nextInt();
System.out.print("Please input the day: ");
int j=sc.nextInt();
Time ti=new Time();
ti.setYear(k);
else this.month = month;
}
public int getDay() {
return day;
}
public void setDay(int day) throws Exception{
if (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12)
else this.year = year;
}
public int getMonth() {
return month;
}
public void setMonth(int month) throws Exception {
if (month>12 || month <1)
{ throw new Exception("The month you set is invalid!"); }
private int month=1;
private int day=1;
public int getYear() {
return year;
}
public void setYear(int year) throws Exception {
if (year==0)
{ throw new Exception("The year you set is invalid!"); }
ti.setMonth(i);
ti.setDay(j);
System.out.println(createMonth(i)+" "+j+" "+k);
}
}
实验数据
实验结果截图:
分析:第一个年月日都正常,因此正常显示,第二个月份超出正常范围,因此出现月份错误异常被捕获输出。第三个日期超出范围,因此出现日期错误异常被捕获输出。程序正确运行,结果如上图所示。
{ if (day>30 || day<1)
{ throw new Exception("The day you set is invalid!"); }
else this.day = day;
}
else if (month==2)
{
if ((( year % 4==0 ) && !(year % 100 ==0)) || (year % 400 == 0))
实验总结
1、通过本实验,了解了异常处理的原理和过程。
2、学会了定义异常、抛出异常、捕获异常的程序实现。
3、知道了程序中抛出异常、捕获异常的过程,以及如何进行异常处理。
指导教师意见
签名:年月日
注:各学院可根据教学需要对以上栏木进行增减。表格内容可根据内容扩充。
{ if (day>31 || day<1)
{ throw new Exception("The day you set is invalid!"); }
else this.day = day;
}
else if (month==4 || month==6 || month==9 || month==11)
{ if (day>29 || day<1)
{ throw new Exception("The day you set is invalid!");}
else this.day = day;
}
else { if (day>28 || day<1)
{ throw new Exception("The day you set is invalid!");}
贵州大学实验报告
学院:计算机科学与信息学院专业:网络工程班级:091
姓名
邱东生
学号
0908060327
实验组
实验时间
05.10
指导教师
曹琳
成绩
实验项目名称
实验四异常处理
实验目的
1、了解异常处理的原理。
2、会自定义异常,实现一般异常的处理。
实验要求
根据要求编写异常处理程序。
实验原理
异常分为系统异常和非系统异常,系统异常可直接捕获处理。非系统异常要先定义异常然后抛出异常,再捕获异常进行处理。
public static void main(String args[]) throws Exception{
Scanner sc=new Scanner(System.in);
System.out.print("Please input the year: ");
int k=sc.nextInt();
case 8:
return a[7]="Aug";
case 9:
return a[8]="Sep";
case 10:
return a[9]="Oct";
case 11:
return a[10]="Nov";
case 12:
return a[11]="Dec";
}
return a[month--];
}
实验仪器
JCREATOR
实验步骤
1、完成老师布置的题目:从键盘输入一个年月日数字,输出英文显示,不在正常范围内则抛出异常。
2、编写满足上面条件的程序,要用到异常处理,对异常进行抛出、捕获处理。
实验内容
实验程序:
import java.util.Scanner;
class Time{
private int year=1;