Java实验之接口与实现、内部类与异常类

Java实验之接口与实现、内部类与异常类

Java实验之接口与实现

评价成绩

体操比赛计算选手成绩的办法是去掉一个最高分和最低分后再计算平均分,而学校考 察一个班级的某科 目的考试情况时,是计算全班同学的平均成绩。Gymastics类 和 school类都实现了ComputcrAverage接 口,但实现的方式不同。
运行结果:
在这里插入图片描述

package com.company;
interface CompurerAverage {
    public double average(double x[]);
}
class Gymnastics implements CompurerAverage {
    public double average(double x[]) {
        int count=x.length;
        double aver=0,temp=0;
        for(int i=0;i<count;i++){
            for(int j=i;j<count;j++){
                if(x[j]<x[i]) {
                    temp=x[j];
                    x[j]=x[i];
                    x[i]=temp;
                }
            }
        }
        for(int i=1;i<count-1;i++){
            aver=aver+x[i];
        }
        if(count>2)
            aver=aver/(count-2);
        else
            aver=0;
        return aver;
    }
}

class School implements CompurerAverage {
    public double average(double[] x) {
        int count=x.length;
        double aver=0;
        for(int i=0;i<count;i++){
            aver=aver+x[i];
        }
        aver=aver/count;
        return aver;
    }
}
public class Main{
    public static void main(String arg[]){
        double a[]={9.89,9.88,9.99,9.12,9.69,9.76,8.97};
        double b[]={89,56,78,90,100,77,56,45,36,79,98};
        CompurerAverage computer;
        computer=new Gymnastics();
        double result=computer.average(a);
        System.out.printf("体操选手最后得分:%5.3f\n",result);
        computer = new School();
        result = computer.average(b);
        System.out.printf("班级考试平均分数:%-5.2f",result);

    }
}

Java实验之内部类与异常类

内部类

在类中声明的类,被称为内部类
包含内部类的类成为内部类的外嵌类

异常类

异常就是程序运行时出现非常规现象
异常对象可调用如下方法得到或输出有关异常信息

public String getMessage();
public void printStackTrace();
public String toString();

try~catch语句用法

try部分:
     抛出异常对象或调用某个可能抛出对象的方法,且爆出异常对象。
catch部分:
     发生异常后的处理

try~catch语句格式

try{
     包含可能发生异常的语句
}
catch(ExceptionSubClass1 e){
     发生异常后的处理1……
}
catch(ExceptionSubClass12 e){
     发生异常后的处理2……
}

内部优惠券

手机专卖店为了促销 自己的产品,决定发行 内部购物券,但其他商场不能发行该购物 券 。编写一个 Mobi1eshop类 (模拟手机专卖店),该类 中有一个名字为 ImerPurchaseMoney
的内部类 (模拟 内部购物券 )。
运行结果:
在这里插入图片描述

package com.company;
class MobileShop{
    InnerPurchaseMoney purchaseMoney1;
    InnerPurchaseMoney purchaseMoney2;
    //
    private int mobileAmount;//手机数量
    MobileShop(){
        purchaseMoney1=new InnerPurchaseMoney(20000);
        purchaseMoney2=new InnerPurchaseMoney(10000);
    }
    void setMobileAmount(int m){
        mobileAmount=m;
    }
    int getMobileAmount(){
        return mobileAmount;
    }
    class InnerPurchaseMoney{
        int moneyValue;
        InnerPurchaseMoney(int m){
            moneyValue=m;
        }
        void buyMobile(){
            if (moneyValue >= 20000) {
                mobileAmount=mobileAmount-6;
                System.out.println("用价值"+moneyValue+"的内部购物券买了6部手机");
            }
            else if(moneyValue<20000&&moneyValue>=10000){
                mobileAmount=mobileAmount-3;
                System.out.println("用价值"+moneyValue+"的内部购物券买了3部手机");
            }
        }
    }
}

public class Main {

    public static void main(String[] args) {
        MobileShop shop=new MobileShop();
        shop.setMobileAmount(30);
        System.out.println("手机专卖店目前有"+shop.getMobileAmount()+"部手机");
        shop.purchaseMoney1.buyMobile();
        shop.purchaseMoney2.buyMobile();
        System.out.println("手机专卖店目前有"+shop.getMobileAmount()+"部手机");
    }
}

检查危险品

车站检查危险品的设备,如果发现危险品会发出警告。编程模拟设备发现危险品。 编写一个 Exception的 子类 Dange吨xception,该 子类可 以创建异常对象,该异常对象 调用 toshow()方 法输出 “属于危险品”。 编写一个 Machinc类 ,该类的方法 checkBag(Goods goods)当 发现参数 goods是 危险品 时 (goods的 怂Danger属 性是 tme)将抛 出 DangerException异 常。 程序在主类 的 Ⅲ1ho方法 中的 岬吒atch语 旬 的 W部 分让 Machhe类 的实例调用
GhcρkBag(Goods goods)方 法,如果发现危险品就在 try-catch语 句的 catch部 分处理危险品。
运行结果:
在这里插入图片描述

// DangerException.java
public class DangerException extends Throwable {
    String message;
    public DangerException(){
        message="危险品!";
    }
    public void toShow(){
        System.out.print(message+"");
    }
}
// Machine.java
public class Machine {
    public void checkBag(Goods goods) throws DangerException{
        if(goods.isDanger){
            DangerException danger=new DangerException();
            throw danger;
        }
        else {
            System.out.print(goods.getName()+"不是危险品!");
        }
    }
}
// Goods.java
public class Goods {
    public boolean isDanger;
    String name;
    public void setDanger(boolean boo)
    {
        isDanger=boo;
    }
    public  void setName(String s){
        name=s;
    }
    public String getName(){
        return name;
    }
}
// Main.java
public class Main {

    public static void main(String[] args) {
        Machine machine=new Machine();
        String name[]={"苹果","炸药","西服","硫酸","手表","硫黄"};
        Goods []goods=new Goods[name.length];//检查6件物品
        for(int i=0;i<name.length;i++){
            goods[i]=new Goods();
            if(i%2==0){
                goods[i].setDanger(false);
                goods[i].setName(name[i]);
            }
            else {
                goods[i].setDanger(true);
                goods[i].setName(name[i]);
            }
        }
        for(int i=0;i< goods.length;i++){
            try{
                machine.checkBag((goods[i]));
                System.out.println(goods[i].getName()+"检查通过");
            }
            catch (DangerException e){
                e.toShow();
                System.out.println(goods[i].getName()+"被禁止!");
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫头丁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值