Java实验七 内部类与异常类

【实验要求】手机专卖店为了促销自己的产品,决定发行内部购物券,但其他商场不能发行该购物券,编写一个MobileShop类(模拟手机专卖店),该类中有一个名字为InnerPurchaseMoney的内部类(模拟内部购物券)。

【实验步骤】

 

NewYear.java

class MobileShop {

InnerPurchaseMoney purchaseMoney1; //用内部类InnerPurchaseMoney声明对象purchaseMoney1

InnerPurchaseMoney purchaseMoney2; //用内部类InnerPurchaseMoney声明对象purchaseMoney2

private int mobileAmount;   //手机的数量

MobileShop ()  {

purchaseMoney1=new InnerPurchaseMoney(20000); //创建价值为20000的purchaseMoney1

purchaseMoney2=new InnerPurchaseMoney(10000); //创建价值为10000的purchaseMoney2

}

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 NewYear {

    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()+"部手机");

}

}

运行结果:

 

【实验要求】车站检查危险品的设备,如果发现危险品会发出警告。编程模拟设备发现危险品。

【实验步骤】

Goods.java

public class Goods {

    boolean isDanger;

String name;

public void setIsDanger (boolean boo) {

isDanger = boo;

}

  public boolean isDanger () {

return isDanger;

}

public void setName( String s) {

name = s;

}

public String getName() {

return name;

}

}

DangerException.java

public class DangerException extends Exception {

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; //抛出danger

}

else {

System.out.print( goods.getName()+"不是危险品!");

}

}

}

Check.java

public class Check {

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].setIsDanger( false);

goods[i].setName ( name[i]);

}

else {

goods[i].setIsDanger( true);

goods[i].setName( name[i]);

}

}

for ( int i=0; i<name.length; i++) {

try { machine.checkBag( goods[i]);

System.out.println(goods[i].getName()+"检查通过");

}

catch( DangerException e ) {

e.toShow(); //e调用toShow() 方法

System.out.println(goods[i].getName()+"被禁止!");

        }

}

}

}

运行结果:

 

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一些关于Java内部类和异常类的实验。 1. Java内部实验 内部类是定义在其他类内部的类。Java中有四种内部类:成员内部类、静态内部类、局部内部类和匿名内部类。下面是一个示例: ```java public class OuterClass { private int x = 10; // 成员内部类 public class InnerClass { public void printX() { System.out.println("x = " + x); } } // 静态内部类 public static class StaticInnerClass { private static int y = 20; public void printY() { System.out.println("y = " + y); } } public void createInnerClass() { // 局部内部类 class LocalInnerClass { private int z = 30; public void printZ() { System.out.println("z = " + z); } } LocalInnerClass localInnerClass = new LocalInnerClass(); localInnerClass.printZ(); } public void createAnonymousInnerClass() { // 匿名内部类 new Thread(new Runnable() { public void run() { System.out.println("Hello, World!"); } }).start(); } } ``` 2. Java异常实验 Java中的异常分为两种:可查异常和运行时异常。可查异常需要在代码中进行处理,而运行时异常则不需要。下面是一个示例: ```java public class ExceptionTest { public static void main(String[] args) { int[] nums = {1, 2, 3}; try { System.out.println(nums[3]); // 抛出ArrayIndexOutOfBoundsException } catch (ArrayIndexOutOfBoundsException e) { System.out.println("数组下标越界!"); } try { int result = 10 / 0; // 抛出ArithmeticException } catch (ArithmeticException e) { System.out.println("除数不能为零!"); } } } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值