A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© a80C51 中级黑马   /  2015-9-17 22:01  /  329 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

废话不说,直接上源代码。具体可以参见代码中注释。
  1. /*
  2.         Note1,当此InvalidValue异常继承的是Exception,并非特别指定是Runtime异常;
  3.                    故在异常位置(MyRec()和MyCircle())利用throw抛出异常,
  4.                    要么采用try catch在方法内部处理;要么采用throws,让调用者来处理该异常。
  5. */
  6. /*
  7.         Note2,当此InvalidValue异常继承的是RuntimeException时,
  8.                    故在异常位置(MyRec()和MyCircle())利用throw抛出异常,
  9.                    无需使用throws来告诉调用者处理该异常。
  10.                    使用该异常的目的在于,求面积运算中,值不能为负。若为负,即便算出来,也是一个没有意义的值。
  11.                    故希望程序员在调用该方法时,注意自己设计的值是否符合实际需求。
  12. */
  13. /*
  14. class InvalidValue extends Exception//Note1
  15. {
  16.         public InvalidValue(){}
  17.        
  18.         public InvalidValue(String msg)
  19.         {
  20.                 super(msg);
  21.         }
  22. }
  23. */
  24. class InvalidValue extends RuntimeException//Note2
  25. {
  26.         public InvalidValue(){}
  27.        
  28.         public InvalidValue(String msg)
  29.         {
  30.                 super(msg);
  31.         }
  32. }
  33. interface Area
  34. {
  35.         public abstract void getArea();
  36. }

  37. class MyRec implements Area
  38. {
  39.         private int length;
  40.         private int width;
  41.        
  42.         public MyRec(){}
  43.        
  44.         /*
  45.         public MyRec(int length,int width) throws InvalidValue//Note1
  46.         {
  47.                 if((length<0)||(width<0))
  48.                         throw new InvalidValue("值非法!");//Note1
  49.                
  50.                 this.length = length;
  51.                 this.width = width;
  52.         }
  53.         */
  54.         public MyRec(int length,int width)//Note2
  55.         {
  56.                 if((length<0)||(width<0))
  57.                         throw new InvalidValue("值非法!");//Note2
  58.                
  59.                 this.length = length;
  60.                 this.width = width;
  61.         }
  62.        
  63.         public void getArea()
  64.         {
  65.                 System.out.println("这个长方形的面积是:"+(length*width));
  66.         }
  67. }

  68. class MyCircle implements Area
  69. {
  70.         private int radius;
  71.         private static final double PI = 3.14;
  72.        
  73.         public MyCircle(){}
  74.         /*
  75.         public MyCircle(int radius) throws InvalidValue//Note1
  76.         {
  77.                 if(radius<0)
  78.                         throw new InvalidValue("值非法!");//Note1
  79.                        
  80.                 this.radius = radius;
  81.         }
  82.         */
  83.         public MyCircle(int radius)//Note2
  84.         {
  85.                 if(radius<0)
  86.                         throw new InvalidValue("值非法!");//Note2
  87.                        
  88.                 this.radius = radius;
  89.         }
  90.        
  91.         public void getArea()
  92.         {
  93.                 System.out.println("这个圆形的面积是:"+(radius*radius*PI));
  94.         }
  95. }

  96. public class AreaApp
  97. {
  98.         public static void main(String[] args)
  99.         {
  100.                 /*
  101.                 try
  102.                 {
  103.                         MyRec myRec = new MyRec(-3,4);
  104.                         myRec.getArea();
  105.                 }
  106.                 catch(InvalidValue e)
  107.                 {
  108.                         System.out.println(e.toString());
  109.                 }
  110.                
  111.                 try
  112.                 {
  113.                         MyCircle myCircle = new MyCircle(-5);
  114.                         myCircle.getArea();
  115.                 }
  116.                 catch(InvalidValue e)
  117.                 {
  118.                         System.out.println(e.toString());
  119.                 }
  120.                 */
  121.                 MyRec myRec = new MyRec(-3,4);
  122.                 myRec.getArea();

  123.                 MyCircle myCircle = new MyCircle(-5);
  124.                 myCircle.getArea();
  125.         }
  126. }
复制代码

1 个回复

倒序浏览
赞一个!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马