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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Friendy89 中级黑马   /  2013-4-5 10:34  /  1389 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Friendy89 于 2013-4-6 09:36 编辑

class NoValueException extends Exception
{
        NoValueException(String msg)
        {
                super(msg);
        }
}
interface Shape
{
        void getArea();
}
class Rec implements Shape
{
        private int len,wid;
        Rec(int len,int wid)throws NoValueException
        {
                if (len<=0||wid<=0)
                        throw new NoValueException("出现非法值 长宽值");
                this.len=len;
                this.wid=wid;
        }
        public void getArea()
        {
                System.out.println("RecShape="+len*wid);
        }
}
class Cir implements Shape
{
        public static final double PI = 3.14;
        private int r;
        Cir(int r)throws NoValueException
        {
                if (r<=0)
                        throw new NoValueException("出现非法值 半径");
                this.r=r;
        }
        public void getArea()
        {
                System.out.println("CirShape="+PI*r*r);
        }
}
class ExceptionTest1
{
        public static void main(String[] args)
        {
                try
                {
                        Rec r=new Rec(-3,4);
                        r.getArea();
                        Cir c=new Cir(5);
                }
                catch (NoValueException e)
                {
                        System.out.println(e.toString());
                }
        
                System.out.println("Over");
        }
}
程序中Rec的len和wid任意一个为负数后,CirShape的值就不运算了,但是r的值为负数时RecShape却可以运算,为什么,代码应该怎么改可以让Rec的len和wid任意一个为负数后,CirShape的值仍可以运算

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

2 个回复

倒序浏览
class NoValueException extends Exception
{
        NoValueException(String msg)
        {
                super(msg);
        }
}
interface Shape
{
        void getArea();
}
class Rec implements Shape
{
        private int len,wid;
        Rec(int len,int wid)throws NoValueException
        {
                if (len<=0||wid<=0)
                        throw new NoValueException("出现非法值 长宽值");
                this.len=len;
                this.wid=wid;
        }
        public void getArea()
        {
                System.out.println("RecShape="+len*wid);
        }
}
class Cir implements Shape
{
        public static final double PI = 3.14;
        private int r;
        Cir(int r)throws NoValueException
        {
                if (r<=0)
                        throw new NoValueException("出现非法值 半径");
                this.r=r;
        }
        public void getArea()
        {
                System.out.println("CirShape="+PI*r*r);
        }
}
class ExceptionTest1
{
        public static void main(String[] args)
        {
                try
                {
                        Rec r=new Rec(-3,4);
                        r.getArea();
                        Cir c=new Cir(5);
                }
                catch (NoValueException e)
                {
                        System.out.println(e.toString());
                }
        
                System.out.println("Over");
        }
}

因为抛出两个异常你应该分别写两个捕获异常,不然不的话一个抛出异常另一个就不能执行了。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
田光峰 发表于 2013-4-5 12:26
class NoValueException extends Exception
{
        NoValueException(String msg)

具体应该怎么改呢,麻烦吧改好之后的程序发给我看下,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马