实验五 输入输出流与异常处理

原创(都是自己写):

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());

   }

}

运行结果:

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值