原创(都是自己写): 1.完成书本8.5.2实验二 车站都配备有检查危险品的设备,如果发现危险品会发出警告。编程模拟设备发现危险品。 ( 1 )编写一个Exception的子类DangerException, 该子类可以创建异常对象,该异常对象调用toShow方法输出: "属于危险品”。 (2)编写-个Machine类,该类的方法checkBag(Goods goods)当发现参数goods是危险品时( goods的isDanger属性是true )将抛出DangerException异常。 (3) 程序在主类的main 方法中的try -catch语句的try 部分让Machine类的实例调用checkBag(Goods gox方法,如果发现危险品,就在try cach语句的catch部分处理危险品。程序运行参考效果如图8.9所示。 2.创建登录异常,登陆时,如果用户名不是zhangsan,则引发登录异常。 3.使用java的输入、输出流将一个文本文件的内容复制到另一个文件里,要求出现IOException异常时,打印出:“出现了文件拷贝异常”,但无论是否有异常,都要关闭文件流。 4.请写出匿名类,其父类为Bird:(fly方法),并被 Demo: watch(Bird)方法调用 Bird.fly:该方法描述出小鸟怎么飞的,不同的鸟飞翔方式不一样,如"展翅高飞","低空盘旋","大鹏展翅" Bird.getName():返回该鸟的鸟名,种类 Demo.watch():强调看到了鸟,比如:"我看到一只??,它"+???? |
1.源程序代码(四个类,Goods.java,Machine.java,DangerException.java,Demo.java(展示类)) Goods.java: public class Goods { public String name;//商品名 public boolean isDanger;//商品是否危险 Goods(String name){//构造函数,并初始化商品名 this.name = name; } public void setIsDanger(boolean bool) {//设置商品是否危险的方法 this.isDanger = bool; } public boolean isDanger() {//判断商品是否危险的方法 return this.isDanger; } public String getName() {//获取商品名的方法 return this.name; } } Machine.java: public class Machine { public void checkBag(Goods goods) throws DangerException{//检查商品是否危险,如果是危险的话就抛出异常,提示是危险物品 if(goods.isDanger()) { DangerException danger = new DangerException(); throw(danger); } } } DangerException.java: public class DangerException extends Exception{//Exception的子类 public String toshow() {//如果抛出异常就输出这个方法 return "属于危险品,"; } } Demo.java: public class Demo { public static void main(String args[]) { Machine machine = new Machine();//声明一个机器对象 Goods banana = new Goods("香蕉");//声明一个商品名为香蕉的对象 banana.setIsDanger(false);//并设置为非危险 Goods gun = new Goods("枪");//声明一个商品名为枪的对象 gun.setIsDanger(true);//并设置为危险 try { machine.checkBag(banana);//判断是否异常(危险) System.out.println(banana.getName()+"属于安全品,检查通过!"); } catch(DangerException ex){ System.out.println(banana.getName()+""+ex.toshow()+"检查不通过"); } try { machine.checkBag(gun);//判断是否异常(危险) System.out.println(gun.getName()+"属于安全品,检查通过!"); } catch(DangerException ex){ System.out.println(gun.getName()+""+ex.toshow()+"检查不通过"); } } } 运行结果:
2.源程序代码(四个类,Computer.java,Login.java,LoginException.java,Demo.java(展示类)) Login.java: public class Login { public String name;//登录名 public boolean isLogin;//登陆状态 Login(String name) {//构造函数并初始化登陆名 this.name = name; } public void login() {//进行登陆,并设置登陆的状态的方法 if(this.name == "zhangsan") { this.isLogin = true; }else { this.isLogin = false; } } public boolean isLogin() {//判断是否登陆成功的方法 return this.isLogin; } } LoginException.java: public class LoginException extends Exception{//Exception的子类 public void toshow() {//新增一个展示登陆异常的提示的方法 System.out.println("登陆异常!"); } } Computer.java: public class Computer { public void checkLogin(Login log) throws LoginException{//电脑类的检查登陆是否成功,如果登陆失败抛出异常 if(log.isLogin() == false) { LoginException login = new LoginException(); throw(login); } } } Demo.java: public class Demo { public static void main(String[] args) { Computer computer = new Computer();//声明一个电脑的对象 Login zhangsan = new Login("zhangsan");//声明一个登录名为zhangsan的对象 Login lisa = new Login("lisa");//声明一个登录名为lisa的对象 try{ zhangsan.login();//登陆 computer.checkLogin(zhangsan);//检查是否登陆成功 System.out.println("登陆成功!"); } catch(LoginException ex) { ex.toshow();//登陆异常,提示 } try{ lisa.login();//登陆 computer.checkLogin(lisa);//检查是否登陆成功 System.out.println("登陆成功!"); } catch(LoginException ex) { ex.toshow();//登陆异常,提示 } } } 运行结果:
3.源程序代码(Demo.java) Demo.java: import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class Demo { public static void main(String args[]) throws IOException{ String content = "学校:福建工程学院,学院:信息科学与工程,专业:计算机科学与技术,班级:1701";//字符串内容 File file1 = new File("E:\\","first.txt");//创一个文件 File file2 = new File("E:\\","second.txt"); FileReader in = null; FileWriter out1 = null; FileWriter out2 = null; try { char a[] = content.toCharArray();//把字符串转换成一个数组 out1 = new FileWriter(file1);//out1为写入文件1的声明 out1.write(a,0,a.length);//把数组内容写入文件1 out1.close();//先关闭文件流,把内容先冲进文件1里 out2 = new FileWriter(file2);//out2为写入文件2的声明 in = new FileReader(file1);//in为写出文件1的声明 StringBuffer sbuffer = new StringBuffer();//缓存流 char b[] = new char[6];//声明一个数组,用来存文件的内容的块 int len; while((len = in.read(b,0,6))!=-1) {//每6个字符就进行存储直到文件末尾 sbuffer.append(new String(b,0,len));//粘到sbuffer的缓存流里 out2.write(b,0,len);//写入文件2里 } System.out.println(new String(sbuffer));//输出缓存流的内容 } catch(IOException ex) {//文件拷贝异常处理 System.out.println("出现了文件拷贝异常"); } finally{ in.close();//关闭文件流 out1.close();//关闭文件流 out2.close();//关闭文件流 } } } 运行结果: 文件:
4.源程序代码(3个类,Bird.java,WoodPecker.java,Demo.java(展示类)) Bird.java: public abstract class Bird {//抽象鸟类 public abstract String getName();//抽象方法获取名字 public abstract String fly();//抽象方法飞行状态 } WoodPecker.java: public class WoodPecker extends Bird{//鸟类的子类啄木鸟 public String getName() {//重写父类的获取名字的方法 return "啄木鸟"; } public String fly() {//重写父类的飞行状态的方法 return "低空盘旋"; } } Demo.java: public class Demo { public static void main(String[] args) { Demo demo = new Demo();//声明一个对象 demo.watch(new Bird() {//匿名类重写父类的方法 public String getName() { return "不知名的鸟"; } public String fly() { return "到处飞"; } });//查看鸟的方法 Bird bird = new WoodPecker();//声明一个啄木鸟的对象 demo.watch(bird);// } public void watch(Bird bird) {//查看鸟的方法 System.out.println("我在看一只"+bird.getName()+"它"+bird.fly()); } } 运行结果: |