黑马程序员技术交流社区

标题: 自定义异常小练习 [打印本页]

作者: fycrik    时间: 2013-7-4 13:51
标题: 自定义异常小练习
  1. /*需求:用户输入长和宽,半径,可求出对象长方形和圆形的面积,当用户输入非法值(0,负数)时程序停止
  2. 分析:
  3. 1.长方形和圆形是两个图形,定义两个类,用于建立图形对象,每个对象初始化都有自己的参数,
  4. 2.因为不同的图形计算面积的公式不同,但功能相同(计算面积),因此可以建议一个接口用于扩展功能
  5. 3.自定义异常:当图形的参数非正时,图形无法建立,则程序停止运行


  6. */
  7. class NoValueException extends RuntimeException
  8. {
  9.         NoValueException(String msg)
  10.         {
  11.                 super(msg);
  12.         }
  13. }

  14. //建立接口,实现求面积的扩展功能
  15. interface Shape
  16. {
  17.         void getArea();                //抽象方法
  18. }


  19. //建立长方形类
  20. class Rec implements Shape
  21. {
  22.         private double len;
  23.         private double wid;
  24.         Rec(double len,double wid)
  25.         {
  26.                 if (len<=0 || wid <=0)
  27.                         throw new NoValueException("非法参数");
  28.                 this.len = len;
  29.                 this.wid = wid;                       
  30.         }

  31.         public void getArea()
  32.         {
  33.                 System.out.println(len * wid);
  34.         }
  35. }


  36. //建立圆形类
  37. class Cir implements Shape
  38. {
  39.         private double rad;
  40.         public static final double PI = 3.14;
  41.         Cir(double rad)
  42.         {
  43.                 if (rad<=0)
  44.                         throw new NoValueException("非法参数");
  45.                 this.rad = rad;               
  46.         }

  47.         public void getArea()
  48.         {
  49.                 System.out.println(rad*rad*PI);
  50.         }
  51. }



  52. class  AreaTest
  53. {
  54.         public static void main(String[] args)
  55.         {
  56.                 Rec r = new Rec(7,7);
  57.                 r.getArea();
  58.                 Cir c = new Cir(9);
  59.                 c.getArea();
  60.         }
  61. }
复制代码

未命名.JPG (55.44 KB, 下载次数: 0)

未命名.JPG

作者: 许庭洲    时间: 2013-7-13 19:50
值得学习ing!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2