实验5:Java 中的接口、匿名类和异常

实验名称:实验5:Java 中的接口、匿名类和异常

一、实验目的

熟悉Java 中的接口、匿名类和异常。

二、实验内容与结果

(说明:按实验任务分别填写任务描述、1.处理思路及2.关键技术说明、3.程序源码和4.运行结果截图,不要心得与体会。)

任务1编写应用程序,从命令行输入两个整数参数,求它们的商。要求程序中捕获NumberformatException异常和ArithmeticException异常。

1.处理思路

如题,并用Scanner法输入String型数据后在try中用integer.parseint()转换进而捕获NumberformatException异常

2.关键技术说明

1.try{包含可能发生异常的语句}

Catch(){}

Catch(){}

2.integer.parseint()是将整型数据Integer转换为基本数据类型int。

可以将命令行输入的数据进行int转换,从而可以用NumberFormatException进行检错。

也可以使用InputMismatchException异常(需引入对应包import java.util.InputMismatchException;),直接适用于命令行输入数据(输入不匹配异常,即输入的值数据类型与设置的值数据类型不能匹配)。

可是题目要求使用NumberformatException,所以放弃使用。

3.程序源码

package r1;
import java.util.Scanner;
public class task1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int z=0;
        System.out.println("请依次输入整数形式被除数和除数");
        String str1 = sc.next();
        String str2 = sc.next();//输入两个参数
        try {
            int x= Integer.parseInt(str1);
            int y= Integer.parseInt(str2);//integer.parseint()是将整型数据Integer转换为基本数据类型int
           
z = x / y;//相除
        }
        catch (NumberFormatException e) {
            System.out.println("输入格式发生异常");
            e.printStackTrace();
        }
        catch (ArithmeticException e) {
            System.out.println("除以为零的数发生异常");
            e.printStackTrace();
        }
        System.out.println("两数相除结果为:"+z);
    }
}

4.运行结果截图

 

 

   任务2设计一个训练场,这个训练场专门训练海豚,使它们能够跳舞dance()和发出“呼呼”的声音cry(),要求用内部类实现。

1.处理思路

如题,设计构造方法输入参数,并用内部类实现dance、cry方法,进行打印

2.关键技术说明

内部类声明可以用static修饰,这样程序就可以在其它类用static内部类来创建对象了

且注意无法从 static 上下文引用非 static 字段 'Groundsname'

3.程序源码

package r1;

public class TrainingGrounds {
    static String Groundsname;
    TrainingGrounds(String groundsname){
        //dolphin=new Dolphin();
        Groundsname
=groundsname;
    }

     static class Dolphin{//static内部类声明
        String Dolphinname;
        Dolphin(String dolphinname){
            Dolphinname=dolphinname;
        }
        public String dance(){
            return "跳舞";
        }
        public String cry(){
            return "呼呼";
        }
        public void showDolphin(){
            System.out.println("我是海豚"+Dolphinname+""+""+dance()+""+cry()+""+"生活在"+Groundsname);
        }
        }
    }

package r1;

public class task2 {
    public static void main(String[] args) {
        TrainingGrounds ground=new TrainingGrounds("开心豚馆");
        TrainingGrounds.Dolphin douplin1 =new TrainingGrounds.Dolphin("开开");
        TrainingGrounds.Dolphin douplin2 =new TrainingGrounds.Dolphin("心心");
        douplin1.showDolphin();
        douplin2.showDolphin();
    }
}

4.运行结果截图

   任务3创建一个名称为Vehicle的接口,在接口中添加两个带有一个参数的方法start()和stop()。在两个名称分别为Bike和Bus的类中实现Vehicle接口。创建一个名称为interfaceDemo的类,在interfaceDemo的main()方法中创建Bike和Bus对象 并访问start()和stop()方法。

1.处理思路

如题,参数为string

2.关键技术说明

Interface接口

Implements实现(重写接口中方法时记得要加public

3.程序源码

package r2;

public interface Vehicle {
    String start(String s);
    String stop(String s);
}

class Bike implements Vehicle{
    public String start(String s) {
        return s+"
牌自行车起飞";
    }
    public String stop(String s) {
        return s+"
牌自行车降落";
    }
}

class Bus implements Vehicle{
    public String start(String s) {
        return s+"
牌公交车起飞";
    }
    public String stop(String s) {
        return s+"
牌公交车降落";
    }
}

package r2;

public class interfaceDemo {
    public static void main(String[] args){
        Bike a=new Bike();
        Bus b=new Bus();
        System.out.println(a.start("
贝慧"));
        System.out.println(a.stop("
贝慧"));
        System.out.println(b.start("
贝佳"));
        System.out.println(b.stop("
贝佳"));
    }
}

4.运行结果截图

任务4假设Computable是一个接口,该接口含有一个compute()方法,编写一个用于计算的应用程序,该程序有一个方法ToCompute(Computable c)方法,可以计算加法和乘法,要求用匿名类实现。

1.处理思路

如题,以及程序说明

2.关键技术说明

匿名类直接参数里新建接口对象并进行方法实现

3.程序源码

package r3;

public class test {
    public static void main(String[] args) {
        //
新建含Computable接口参数work方法类Computablec
       
Computablec exp = new Computablec();
        //
调用类里含Computable接口参数方法work
       
exp.work(new Computable() {//直接在里面将新建Computable接口对象并进行实现接口中compute方法
            @Override
            public void compute(double a, double b) {
                double c, d;
                c = a + b;
                d = a * b;
                System.out.println("
两个实数和为" + c + ",积为" + d);
            }
        });
        }
}

package r3;

import java.util.Scanner;
//
接口
public interface Computable {
   public void compute(double a,double b);
}
//
含接口参数方法类
class Computablec{
    public void work(Computable exp){
        Scanner sc=new Scanner(System.in);
        System.out.println("
请输入两个实数");
        double a=sc.nextDouble();
        double b=sc.nextDouble();
        exp.compute(a,b);
    }
}

4.运行结果截图

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值