异常:
题目1:品尝饮料
一、 语言和环境
1. 实现语言:Java
2. 环境要求:JDK1.4或以上版本及其联机帮助文档
二、 要求
1、 使用命令行参数(饮料类型),输出该饮料类型的味道,如:当命令行参数为1时,结果见图1:
2、 如果没有该种饮料,结果见如图2:
三、 推荐实现步骤
1、 建立一个Java抽象类Drink,应当:
a、 声明一个抽象方法taste(),该方法负责输出饮料的味道;
b、 声明int型常量来代表不同的饮料类型(咖啡、啤酒、牛奶),如:1 咖啡,2 啤酒,3 牛奶
c、 声明静态方法getDrink(int drinkType),根据传入的参数创建不同的饮料对象,并返回该对象,建议使用switch语句。该方法要求声明DrinkNotFoundException,当没有相对应的饮料类型时,抛出该异常。
2、 建立Drink的具体子类:
a、 分别建立Drink的子类:Coffee(代表咖啡),Beer(代表啤酒),Milk(代表牛奶);
b、 子类分别要求:
1. Coffee类 私有属性品牌(brand),带有此属性参数的构造方法;并提供相应的setter和getter方法;
2. Beer类 私有属性颜色(color),带有此属性参数的构造方法;并提供相应的setter和getter方法;
3. Milk类 私有属性状态(state),带有此属性参数的构造方法;并提供相应的setter和getter方法;
c、 实现taste()方法,要求在控制台打印各自的味道特征。
3、 建立异常类DrinkNotFoundException
a、 继承Exception
b、 在Drink的方法getDrink(int drinkType)中声明引发DrinkNotFoundException异常,当传入的参数没有相对应的饮料类型时,抛出异常。
c、 在使用getDrink方法的类中捕捉该异常。
4、 建立Test测试类,测试以上内容的正确性
a、 编写main方法,通过命令行传参的方式传入某种饮料的类型。
b、 在main方法中,调用Drink类的getDrink方法,获得相应的饮料对象。注意捕获DrinkNotFoundException。
c、 然后调用该饮料对象的taste()方法,输出该饮料的味道。
5、 编译程序,并运行。
四、 注意事项
1、 仔细审题,把题目要求理解准确;
2、 请注意多态性的运用;
3、 请注意代码的书写、命名符合规范,应有适当的注释。
package Lesson_12_1_teacher; public abstract class Drink { public abstract void taste();//输出饮料的味道 private static final int COFFEE=1; private static final int BEER=2; private static final int MILK=3; public static Drink getDrink(int drinkType){ Drink drink=null; switch(drinkType){ case COFFEE: drink=new Coffee(); break; case BEER: drink=new Beer(); break; case MILK: drink=new Milk(); break; default: try { throw(new DrinkNotFoundException("没有找到对应的饮料!")); } catch (DrinkNotFoundException e) { System.out.println(e.getMessage()); System.exit(-1); }catch(Exception e){ System.out.println(e.getMessage()); } } return drink; } }
package Lesson_12_1_teacher; public class Milk extends Drink { //Drink 的子类--Drink类 private String state; public String getState() { return state; } public void setState(String state) { this.state = state; } @Override public void taste() { System.out.println("牛奶:酸"); } }
package Lesson_12_1_teacher; public class Beer extends Drink { //啤酒类 private String color; public String getColor() { return color; } public void setColor(String color) { this.color = color; } @Override public void taste() { System.out.println("啤酒:香"); } }
package Lesson_12_1_teacher; public class Coffee extends Drink { //咖啡类 private String brand; public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } // public Coffee(String brand) { // super(); // this.brand = brand; // } @Override public void taste() { System.out.println("咖啡:苦"); } }
package Lesson_12_1_teacher; public class DrinkNotFoundException extends Exception { //自定义异常,找不到饮料 public DrinkNotFoundException(String errorMessage){ super(errorMessage); } }
package Lesson_12_1_teacher; public class HomeWork0305 { //测试类 public static void main(String[] args) { int n=Integer.parseInt(args[0]); Drink.getDrink(n).taste(); } }