实验 (9) 项目名称:内部类与异常类
一、 实验报告内容一般包括以下几个内容:
- 实验项目名称 实验9 内部类与异常类
- 实验目的和要求
本实验的目的:
本实验的目的是让学生掌握JAVA中异常处理的作用及常用的异常类,掌握异常处理的设计方法。
实验具体要求:
编写两个程序:
(1)编写一个匿名类D,首先编写一个接口Animal,里面有一个方法shout(). 还有一个类ShowShout,里面有方法animalShout,它还有Animal接口做为参数,方法中会调用shout()方法。主类D中用ShowShout创建对象,该对象调用通过匿名类实现shout()方法。这里具体实现可以用Cat。
(2)编写一个异常类MyException, 再编写一个类Student,该类有一个产生异常的方法speak(int m), 要求参数m的值大于1000时,方法抛出一个MyException对象。最后编写一个主类,在主类的main方法中用Student创建一个对象,让该对象调用speak方法。
(3)设计一个Java程序,自定义异常类,从命令行(键盘)输入一个字符串, 如果该字符串值为“XYZ”,则抛出一个异常信息“This is a XYZ”,如果从命令行输入 ABC,则没有抛出异常。(只有 XYZ 和 ABC 两种输入)。 - 实验原理
- 主要仪器设备
(1)学生每人一台PC机;
(2)互联网环境。 - 实验解答:
(1)
D.java
package data20240428;
public class D {
public static void main(String[] args) {
ShowShout showShout = new ShowShout();
showShout.animalShout(new Animal() {
@Override
public void shout() {
System.out.println("喵喵");
}
});
}
}
Animal.java
package data20240428;
public interface Animal {
public void shout();
}
ShowShout.java
package data20240428;
public class ShowShout {
public void animalShout(Animal animal){
animal.shout();
}
}
(2)
Demo2.java
package data20240428;
public class Demo2 {
public static void main(String[] args) {
Student student = new Student();
try{
student.speak(100);
student.speak(1001);
student.speak(101);
}
catch (MyException e){
System.out.println(e.warnMess());
}
}
}
MyException.java
package data20240428;
public class MyException extends Exception{
String message;
public MyException(){
message = "参数m错误,m>1000";
}
public String warnMess(){
return message;
}
}
Student.java
package data20240428;
public class Student {
public void speak(int m) throws MyException{
if(m>1000){
throw new MyException();
}
System.out.println("m = "+m);
}
}
(3)
Demo3.java
package data20240428;
import java.util.Scanner;
public class Demo3 {
public static void main(String[] args) {
CharTest charTest = new CharTest();
String s;
Scanner scanner = new Scanner(System.in);
for(int i=0;i<2;++i)
{
s=scanner.next();
try{
charTest.input(s);
}
catch (TestException e){
System.out.println(e.warnMess());
}
}
}
}
TestException.java
package data20240428;
public class TestException extends Exception{
String message;
public TestException(String s){
if(s.equals("XYZ"))
message = "This is " + s;
else
message = "请输入'ABC'或'XYZ'";
}
public String warnMess(){
return message;
}
}
CharTest.java
package data20240428;
public class CharTest {
public void input(String s) throws TestException{
if(!s.equals("ABC"))
{
throw new TestException(s);
}
}
}