JAVA实验报告 接口 泛型 枚举 内部类与异常
不能给我一个 null 的参数! P183 9-3 的运行结果为:
D:\Java>java Summer3
也不能给我一个不是数值型的参数!
sum=0 public class BuHuo{
public static int sum(String a,String b){ int sum=0,x=0,y=0; try{ a.trim(); b.trim(); x=Integer.parseInt(a); y=Integer.parseInt(b); sum=x+y;
} public static void main(String[] args){ int result=sum("ab",null); System.out.println("sum="+result);
}
}
四、实验体会(实验中碰到的问题及解决方法等) 1、知道了接口该如何定义和如何使用接口。 2、学会了枚举类的定义和使用,掌握了内部类的定义和使用方法。 3、能正确区分异常和错误,掌握了将可能发生异常的语句放在 try{}catch(){}代
} public static void main(String[] args){ GenericPool<String>pool=new GenericPool<String>(2); System.out.println(pool.add("1")); String x=pool.get(); System.out.println(x); System.out.println(pool.add("2"));
实验报告
课程名称: Java 程序设计
成绩评定:
实验项目名称:接口、泛型、枚举、内部类与异常 指导教师:
学生姓名: 学号: 专业班级:
实验项目类型: 基础 实验地点: 实验时间:
一、实验目的与要求:
1、理解接口的定义与实现; 2、知道泛型、枚举型与内部类的基本应用; 3、掌握常用异常的抛出与捕获及处理. 二、实验环境:(硬件环境、软件环境)
} }
2
2. public class GenericPool<T>{ private Object[] objArray; private int headLoc; private int tailLoc; public GenericPool(int length){ objArray=new Object[10]; headLoc=-1; tailLoc=-1;
4
}catch(NullPointerException e){ System.out.println("不能给我一个 null 的参数!");
}catch(NumberFormatException e){ System.out.println("不能给我一个不是数值型的字符串参数!");
} return sum;
பைடு நூலகம்} }
3. public class OutClass{ private String name; private String state; public OutClass(String name,String state){
3
super(); =name; this.state=state;
} } public class MainBoard{
public void usePCICard(PCI p){ p.start(); p.stop();
} public static void main(String[] args){ NetworkCard nc=new NetworkCard(); SoundCard sc=new SoundCard(); MainBoard mb=new MainBoard(); ePCICard(nc); ePCICard(sc);
码块中,来确保异常发生时能够得到捕获,并学会了自定义异常。 4、理解题目容易,自己写比较难,往往会遇到一些问题很难得到解决。如:找不
到符号是什么愿意导致,当定义一个方法为 public 时,有时程序会出错,而删除时程序 能正常运行的原因。
5、将可能发生异常的语句放在 try{}还不能很好的理解,如:对输入值的判断,不 知道该把那句放在 try 中。
5
} return (T)result;
} public int add(T o){ int ins=(tailLoc+1)%objArray.length; if(objArray[ins]!=null){ return -1;
} objArray[ins]=o; tailLoc=ins; return ins;
1.硬件环境:奔Ⅳ PC。 2.软件环境:Windows XP 操作系统,JDK6.0。 三、实验内容:(原理、操作步骤、程序代码等)
任务: 1、按照要求完成下述接口及实现类的程序 1) 定义名称为 PCI()的接口,包括启动的方法 start 和关闭的方法 stop; 2) 定义名称为 NetworkCard 的类表示网卡,实现 PCI 接口,并且其在实现 start 方法时输出“sending data……”,在实现 stop 方法时输出“network stop.” 3) 定义名称为 SoundCard 的类表示声卡,实现 PCI 接口;并且其在实现 start 方法时输出“dudu……”,在实现 stop 方法时输出“sound stop.” 4) 定义名称为 MainBoard 的类表示主板,包含方法 public void usePCICard(PCI p),在方法体内通过 p 来启动和关闭组件; 5) 定义一个包含 main 方法的 Test 类,在 main 方法内创建一个 MainBoard 对 象用 mb 来引用,创建一个 NetworkCard 对象用 nc 来引用,创建一个 SoundCard 对象用 sc 来引用,分别通过 mb 来使用 usePCICard(PCI p)启动声 卡和网卡。 2、 泛型类程序的调试 调试教材 P165 的程序 8-2,写出程序运行结果,理解泛型类的工作机理及应用。 3、 调试运行内部类程序: 在类内部再定义另外一个类,这个另外定义的类就叫内部类。调试教材 P171-172
并调试后写出运行结果。
1
具体操作步骤及程序代码为: 1. interface PCI{
public void start(); public void stop(); } class NetworkCard implements PCI{ public void start(){
System.out.println("sending data......"); }
} private void say(){ System.out.println("外部"+name+"的状态是"+state); }
public class InnerClass{ public void alarm(){ System.out.println("内部:"+name+"的状态是"+state); say(); } }
程序 8-3,写出程序运行结果,理解内部类的定义方法与应用。 4、异常抛出与捕获编程与调试 先调试教材 P182、183 中的程序 9-2 和 9-3,写出调试结果。然后,自己编写一
个能抛出并捕获、处理 NullPointerException、NumberFormanException 多异常的程序,
public void stop(){ System.out.println("network stop.");
} } class SoundCard implements PCI{
public void start(){ System.out.println("dudu......");
} public void stop(){ System.out.println("sound stop.");
public static void main(String[] args){ OutClass Outer=new OutClass("冰箱","完好"); OutClass.InnerClass inner=Outer.new InnerClass(); inner.alarm();
} }
4.p182 9-2 的运行结果为: D:\Java>java Summer2
java实验报告 接口、泛型、枚举、内部类与异常
实验报告课程名称: Java程序设计成绩评定:实验项目名称:接口、泛型、枚举、内部类与异常指导教师:学生姓名:学号:专业班级:实验项目类型:基础实验地点:实验时间:一、实验目的与要求:1、理解接口的定义与实现;2、知道泛型、枚举型与内部类的基本应用;3、掌握常用异常的抛出与捕获及处理.二、实验环境:(硬件环境、软件环境)1.硬件环境:奔ⅣPC。
2.软件环境:Windows XP 操作系统,JDK6.0。
三、实验内容:(原理、操作步骤、程序代码等)任务:1、按照要求完成下述接口及实现类的程序1)定义名称为PCI()的接口,包括启动的方法start和关闭的方法stop;2)定义名称为NetworkCard 的类表示网卡,实现PCI接口,并且其在实现start方法时输出“sending data……”,在实现stop方法时输出“network stop.”3)定义名称为SoundCard 的类表示声卡,实现PCI接口;并且其在实现start方法时输出“dudu……”,在实现stop方法时输出“sound stop.”4)定义名称为MainBoard 的类表示主板,包含方法public void usePCICard(PCIp),在方法体内通过p来启动和关闭组件;5)定义一个包含main方法的Test类,在main方法内创建一个MainBoard 对象用mb来引用,创建一个NetworkCard对象用nc来引用,创建一个SoundCard对象用sc来引用,分别通过mb来使用usePCICard(PCI p)启动声卡和网卡。
2、泛型类程序的调试调试教材P165的程序8-2,写出程序运行结果,理解泛型类的工作机理及应用。
3、调试运行内部类程序:在类内部再定义另外一个类,这个另外定义的类就叫内部类。
调试教材P171-172程序8-3,写出程序运行结果,理解内部类的定义方法与应用。
4、异常抛出与捕获编程与调试先调试教材P182、183中的程序9-2和9-3,写出调试结果。
java异常类实验报告
计算科学与工程(院、系)网络工程专业班组Java语言程序设计课学号姓名dong ge 实验日期教师评定实验四:异常类一、实验目的1、认识程序的逻辑运行错误,学习Java语言的异常处理机制。
2、加深异常处理机制的理解,认识Java语言中的常见异常类。
3、学习Java语言中多异常处理。
4、学习在方法中抛出异常,捕获并处理由方法抛出的异常。
5、学习自己定义异常类。
二、实验要求1、以上图为长方体类的继承关系,Rectangle为矩形类,为矩形类定义两个构造方法,分别带有两个参数和一个参数,其中带有两个参数的构造方法调用带有一个参数,toString()成员方法的功能显示矩形的长和宽以及面积;Cuboid为长方体类,为长方体类定义两个构造方法,分别带有三个参数和和没有参数,其中带有两个参数的构造方法调用父类带有两个参数的构造方法,长方体不需要计算周长返回0,toString()成员方法的功能显示长方体的长和宽、高以及体积;在主方法中定义对象测试所定义的类。
2、编写一个程序,抛出一个ArrayIndexOutOfBoundsException异常,并捕获处理。
3、自定义一个异常类,异常类中有一个带字符串参数的构造方法,将此参数赋值给异常类中惟一的字符串数据成员。
类中还定义一个成员方法,打印字符串数据成员。
在主方法中测试这个异常类。
三、实验程序和结果1、程序代码:interface Area {public double area();}interface Volume {public double volume();}class Rect implements Area{double Length;double Width;double area;Rect(){}Rect(double Length){this.Length=Length;System.out.println("没有参数的构造方法被调用"); }Rect(double Length, double Width){this(Length);this.Width=Width;System.out.println("一个参数的构造方法被调用"); }public double area(){return Length*Width;}public double perimeter(){return 2*(Length+Width);}public String toString(){return Length+" "+Width+" "+area();}}class Cuboid extends Rect implements Volume{double Height;Cuboid( ){System.out.println("没有参数的构造方法被调用"); }Cuboid(double Height,double Width,double Length){super(Length,Width);this.Height=Height;System.out.println("两个参数的构造方法被调用");}public double perimeter(){return 0;}public double volume (){return Height*Width*Length;}public String toString(){return Length+" "+Width+" "+Height+" "+volume();}}public class R{public static void main(String[] args){Rect n=new Rect(2.0,5.0);System.out.println ("长,"+"宽,"+"面积"+"分别为"+n.toString());Cuboid c=new Cuboid(5.0,6.0,8.0);System.out.println("长,"+"宽,"+"高,"+"体积"+"分别为"+c.toString());}}输出结果为:没有参数的构造方法被调用一个参数的构造方法被调用长,宽,面积分别为2.0 5.0 10.0没有参数的构造方法被调用一个参数的构造方法被调用两个参数的构造方法被调用长,宽,高,体积分别为8.0 6.0 5.0 240.02、:编写一个程序,抛出一个ArrayIndexOutOfBoundsException异常,并捕获处理。
java异常处理实验报告
java异常处理实验报告Java异常处理实验报告一、实验目的本次实验旨在通过编写Java程序,学习和掌握异常处理的相关知识和技巧,提高代码的健壮性和可靠性。
二、实验环境本次实验使用的开发环境为Eclipse,使用Java语言进行编程。
三、实验内容1. 异常的概念异常是指程序在运行过程中出现的意外情况,例如除零错误、数组越界等。
Java中的异常是以类的形式存在的,所有异常类都是Throwable类的子类。
2. 异常处理的方法Java提供了try-catch-finally语句用于处理异常。
在try块中编写可能会抛出异常的代码,如果发生异常,则会跳转到对应的catch块进行处理。
finally块中的代码无论是否发生异常都会被执行。
3. 异常的分类Java中的异常分为两种类型:受检异常(Checked Exception)和非受检异常(Unchecked Exception)。
受检异常需要在代码中显式地进行处理,否则编译器会报错;而非受检异常不需要强制处理。
4. 自定义异常除了使用Java提供的异常类,我们还可以根据需要自定义异常类。
自定义异常类需要继承Exception类或RuntimeException类,并重写相应的方法。
5. 异常处理的最佳实践在实际的软件开发中,异常处理是非常重要的一部分。
以下是一些异常处理的最佳实践:- 尽早捕获异常:在代码中尽量早地捕获异常,以避免异常的传播和影响其他部分的代码。
- 适当处理异常:根据具体情况,选择合适的处理方式,可以是打印日志、返回默认值、抛出新的异常等。
- 避免捕获过宽的异常:捕获异常时要尽量精确,避免捕获过宽的异常类型,以免屏蔽了真正的问题。
四、实验步骤1. 创建一个Java项目,并新建一个类用于实现异常处理的实验。
2. 编写代码,在try块中编写可能会抛出异常的代码。
3. 使用catch块捕获异常,并进行相应的处理,例如打印异常信息。
4. 在finally块中编写必要的代码,例如资源的释放。
java实验报告——异常、集合类和泛型
for(int x=13;x<Stu.length;x++) {
Stu[x]-generated method stub //XueShengXinXi[] Stu=ChuShiHua(); //初始化系统数据 XueShengXinXi[] Stu=new XueShengXinXi[100]; Stu[0]=new XueShengXinXi("专业", "班级", "姓名", "性别", "电话", "家庭住址 "); Stu[1]=new XueShengXinXi(" 自 动 化 ", " 自 动 化 10-1", " 张 三 ", " 男 ", "63256", "fnhjfdhsdbh"); Stu[2]=new XueShengXinXi("自动化", "自动化10-2", "李四", "女", "653256", "nfhggdfddhsdbh"); Stu[3]=new XueShengXinXi(" 电 子 ", " 电 子 10-1", " 王 五 ", " 男 ", "6156", "fnhvjbh");
java异常处理实验报告
java异常处理实验报告Java异常处理实验报告引言:异常处理是Java编程中非常重要的一部分,它能够帮助我们优雅地处理程序中可能出现的错误情况,提高程序的健壮性和稳定性。
本实验旨在通过编写一段简单的Java代码,来探索异常处理的机制和应用。
实验过程:在实验中,我们编写了一个简单的Java程序,用于模拟一个学生信息管理系统。
该程序包含了以下几个功能:添加学生信息、查询学生信息、删除学生信息和修改学生信息。
在每个功能中,我们故意引入了一些可能导致异常的情况,以便验证异常处理的效果。
首先,我们创建了一个名为"Student"的类,用于表示学生的信息。
该类包含了学生的姓名、年龄和成绩等属性,并提供了相应的getter和setter方法。
接着,我们创建了一个名为"StudentManagementSystem"的类,用于实现学生信息的管理功能。
在添加学生信息的功能中,我们通过捕获可能抛出的"NullPointerException"异常来处理可能出现的空指针异常。
当用户输入的学生信息为空时,程序将抛出该异常并给出相应的提示信息,避免程序崩溃。
在查询学生信息的功能中,我们通过捕获可能抛出的"IndexOutOfBoundsException"异常来处理可能出现的数组越界异常。
当用户输入的学生索引超出了学生信息数组的范围时,程序将抛出该异常并给出相应的提示信息,避免程序崩溃。
在删除学生信息的功能中,我们通过捕获可能抛出的"NumberFormatException"异常来处理可能出现的数字格式异常。
当用户输入的学生索引不是一个合法的数字时,程序将抛出该异常并给出相应的提示信息,避免程序崩溃。
在修改学生信息的功能中,我们通过捕获可能抛出的"InputMismatchException"异常来处理可能出现的输入不匹配异常。
java异常处理实验结论 -回复
java异常处理实验结论-回复【java异常处理实验结论】在开发过程中,异常处理是一个至关重要的问题。
异常处理允许开发者在程序运行过程中,捕获并处理潜在的错误情况,以避免程序的崩溃或异常行为。
本文将通过实验探讨Java中异常处理的相关原理和方法,并总结实验结论。
首先,我们需要了解异常是什么。
在Java中,异常是指在程序运行过程中可能发生的错误或异常情况。
这些错误或异常情况可能是由于外部因素(如网络连接问题)、程序逻辑错误或用户输入不合法等原因引起的。
异常通过抛出和捕获机制来处理。
Java提供了一套完整的异常处理机制,以帮助开发人员捕获和处理异常。
异常处理的主要目标是提供一种对错误情况进行处理的方法,从而避免程序的崩溃或异常行为。
异常处理的主要思想是,在程序中进行适当的异常捕获,然后根据具体情况给予合适的处理和反馈。
为了更好地理解Java异常处理机制,我们进行了一系列的实验。
在实验中,我们模拟了几种常见的异常情况,并使用Java异常处理机制进行了处理。
实验的目的是验证Java异常处理机制的可行性和有效性。
实验一:ArithmeticException异常处理在该实验中,我们模拟了一个除零异常的情况。
在Java中,当一个数字尝试除以0时,会抛出ArithmeticException异常。
为了处理这种异常,我们使用了try-catch块来捕获该异常,并对异常进行了相应的处理。
实验结果表明,通过使用try-catch块来捕获ArithmeticException异常,我们能够有效地处理该异常,并避免程序的崩溃。
实验表明,Java 异常处理机制的确具有良好的可行性和有效性。
实验二:ArrayIndexOutOfBoundsException异常处理在该实验中,我们模拟了一个数组越界的异常情况。
在Java中,当我们尝试访问数组中不存在的索引时,会抛出ArrayIndexOutOfBoundsException异常。
java异常处理实验总结
java异常处理实验总结
在这个实验中,我们学习了Java中的异常处理机制。
异常是在程序执行过程中发生的错误或异常情况,例如除以零、数组越界等。
在Java中,异常被分为两种类型:受检异常和非受检异常。
受检异常是在代码中显式声明并处理的异常,需要在方法签名中声明并在方法体中捕获或抛出。
这样做是为了确保开发人员在编写代码时考虑到了可能发生的异常情况,并处理它们。
受检异常的处理方式包括捕获和处理异常、向调用方法抛出异常或者使用try-catch-finally语句块处理异常。
非受检异常是指那些不需要在代码中显式声明和捕获的异常,通常是由程序错误导致的异常,如空指针异常、数组越界异常等。
对于非受检异常,我们可以使用try-catch语句块来捕获并处理异常,或者在方法签名中使用throws关键字声明可能抛出的异常。
在实验中,我们通过编写代码来模拟各种异常情况,并使用try-catch语句块来捕获和处理异常。
我们还学习了如何创建自定义异常类,并在需要的时候抛出这些异常。
通过这个实验,我学到了异常处理的重要性以及如何正确地处理异常。
异常处理可以提高程序的健壮性和容错性,避免程序崩溃或出现未知的错误。
同时,异常处理也可以帮助我们定位和调试代码中的问题,提高代码的可维护性和可读性。
总的来说,这个实验对我来说是一次很好的学习和实践机会,让我更深入地理解了Java中的异常处理机制,并掌握了如何正确地处理异常。
我相信这些知识和技能对我在日后的编程工作中会非常有帮助。
java内部类,抽象类,继承,接口,异常的处理等
序抽象类的特点:1,抽象方法一定在抽象类中。
2,抽象方法和抽象类都必须被abstract关键字修饰。
3,抽象类不可以用new创建对象。
因为调用抽象方法没意义。
4,抽象类中的抽象方法要被使用,必须由子类复写起所有的抽象方法后,建立子类对象调用。
如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。
抽象类和一般类没有太大的不同。
抽象类比一般类多个了抽象函数。
就是在类中可以定义抽象方法。
抽象类不可以实例化。
特殊:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象。
abstract 关键字,和哪些关键字不能共存。
final:被final修饰的类不能有子类。
而被abstract修饰的类一定是一个父类。
private: 抽象类中的私有的抽象方法,不被子类所知,就无法被复写。
而抽象方法出现的就是需要被复写。
static:如果static可以修饰抽象方法,那么连对象都省了,直接类名调用就可以了。
可是抽象方法运行没意义。
抽象类中有构造函数,因为抽象类是一个父类,要给子类提供实例的初始化。
继承:1,提高了代码的复用性。
2,让类与类之间产生了关系。
有了这个关系,才有了多态的特性。
注:不要为了获取其他类的功能,简化代码而继承。
必须是类与类之间有所属关系才可以继承。
所属关系 is a。
Java语言中:java只支持单继承,不支持多继承。
因为多继承容易带来安全隐患:当多个父类中定义了相同功能,当功能内容不同时,子类对象不确定要运行哪一个。
但是java保留这种机制。
并用另一种体现形式来完成表示。
多实现。
java支持多层继承。
也就是一个继承体系子父类中的函数。
当子类出现和父类一模一样的函数时,当子类对象调用该函数,会运行子类函数的内容。
如同父类的函数被覆盖一样。
这种情况是函数的另一个特性:重写(覆盖)当子类继承父类,沿袭了父类的功能,到子类中,但是子类虽具备该功能,但是功能的内容却和父类不一致,这时,没有必要定义新功能,而是使用覆盖特殊,保留父类的功能定义,并重写功能内容。
JAVA实验报告_Java异常处理
贵州大学实验报告学院:计信学院专业:网络工程班级:101 姓名学号实验组实验时间05.27 指导教师肖源源成绩实验项目名称Java异常处理实验目的1)掌握Java异常的概念及工作机制2)掌握异常的分类3)掌握抛出异常语句的使用(throw)4)掌握抛出捕获处理异常语句的使用(try…catch…finally) 5)掌握上抛异常语句的使用(throws)6)掌握创建自定义异常实验要求1.安装并设置Java SDK 软件包。
2.按要求编写程序完成实验指导所需实验要求。
3.调试并成功运行。
实验内容1、编写一个应用程序,要求从键盘输入一个double型的圆的半径,计算并输出其面积。
测试当输入的数据不是double型数据(如字符串“abc”)会产生什么结果,怎样处理。
(根据上课讲课内容来做)。
实验代码import java.io.*;public class Circle {public static void main (String[] args)throws IOException{System.out.println("请输入圆的半径:");BufferedReader str=new BufferedReader(new InputStreamReader(System.in));try{ System.out.println("圆的面积为:"+computerArea(Double.parseDouble(str.readLine())));}catch(NumberFormatException e){System.out.println("输入异常");}}public static double computerArea (double r) { return Math.PI*r*r;}}实验数据使用ecplise运行,正常输入,则给出计算结果输入非double数值,则显示异常。
java泛型枚举和异常实验报告
System.out.println("value= " + s);
}
}
2.阅读程序并分析其输出结果:
public class Exceptiontest
{
public static void mb_createException()
{
this.obj = o1;
}
public Object getobj()
{
return obj;
}
public void setobj(o one)
{
this.obj = one;
}
public void showTyep() {
System.out.println("T的实际类型是: " + obj.getClass().getName());
}
}
public class GenericityDemo
{
public static void main(String[] args)
{
//定义类Genericity的一个Integer版本
Genericity<Integer> intobj = new Genericity<Integer>(new Integer(88));
}
}
class Calculate
{
public void Calcuat(double a,double b)
{
System.out.println("结果为:"+a/b);
}
}
