<>Java内部类与异常类(上机实践二)
<>实践一 内部购物卷
手机专卖店为了促销自己的产品,决定发行内部购物券,但其他商场不能发行该购物券。编写一个 MobileShop 类(模拟手机专卖店),该类中有一个名字为
InnerPurchaseMoney 的内部类(模拟内部购物券)。
class MobileShop { InnerPurchaseMoney purchaseMoney1;
//【代码1】//用内部类InnerPurchaseMoney声明对象purchaseMoney1 InnerPurchaseMoney
purchaseMoney2;//【代码2】 //用内部类InnerPurchaseMoney声明对象purchaseMoney1 private int
mobileAmount; //手机的数量 MobileShop(){ purchaseMoney1=new InnerPurchaseMoney(20000)
;//【代码3】 //创建价值为20000的purchaseMoney1 purchaseMoney2=new InnerPurchaseMoney(20000
);//【代码4】 //创建价值为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()+"部手机"); } }
运行结果:
<>实践二 检查危险品
车站检查危险品的设备,如果发现危险品会发出警告。编程模拟设备发现危险品。编写一个 Exception 的子类
DangerException,该子类可以创建异常对象,该异常对象调用 toShow()方法输出“属于危险品”。编写一个 Machine 类,该类的方法
checkBag(Goods goods)当发现参数 goods 是危险品时(goods 的 isDanger 属性是 true)将抛出
DangerException 异常。程序在主类的 main()方法中的 try-catch 语句的 try 部分让 Machine 类的实例调用
checkBag (Goods goods)方法,如果发现危险品就在 try-catch 语句的 catch 部分处理危险品。
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<goods.length;i++) { try { machine.checkBag(goods[i]);//【代码1】 //检查物品 System.
out.println(goods[i].getName()+"检查通过"); }catch(DangerException e) { e.toShow();
//【代码2】 //e调用toShow()方法 System.out.println(goods[i].getName()+"被禁止!"); } } } }
public class DangerException extends Exception{ public String toShow(){ return
"属于危险品"; } } 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; } } public class Machine { public void checkBag(Goods goods)
throws DangerException { if(goods.isDanger()) { DangerException danger=new
DangerException();//【代码1】 //抛出danger throw danger; } else { System.out.print(
goods.getName()+"不是危险品! "); } } }
运行结果: