黑马程序员技术交流社区

标题: 又是代码。<已解决> [打印本页]

作者: 王德升    时间: 2012-5-31 21:52
标题: 又是代码。<已解决>
本帖最后由 王德升 于 2012-6-3 23:13 编辑

interface Shape
{
        double getArea();
}

class Rec implements Shape
{
        private int len,wid;
        
        Rec(int len,int wid)
        {
                this.len = len;
                this.wid = wid;
        }

        public double getArea()
        {
                return len * wid;
               
        }
}

class ExceptionTest1
{
        public static void main(String[] args)
        {
                Rec c = new Rec(3,9);
                c.getArea();
        }
}

毕老师说换成double类型的,可是我试了,为什么编译和运行都可以通过但是就是冒烟结果呢,
请大家帮我看看是怎么回事。



class NoValueException extends RuntimeException
{
        NoValueException(String message)
        {
                super(message);
        }
}



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(len*wid);
        }
}


class Crecl implements Shape
{
        private int r;
               
        private static double PI = 3.14;
        
        Crecl(int r)
        {
                this.r = r;
        }

        public void getArea()
        {
                System.out.println(r*r*PI);
        }        
}

class ExceptionTest
{
        public static void main(String[] args)
        {        
                //try
                //{
                        Rec r = new Rec(3,9);
                        r.getArea();
                //}
                //catch(NoValueException e)
                //{
                        //System.out.println(e.toString());
                //}

                        Crecl c = new Crecl(-9);
                        c.getArea();
        }
}



这段代码中无论我往Crecl里面传正数还是负数结果都是正的,这是为什么呢,?

D:\java0420\day10>javac ExceptionTest.java

D:\java0420\day10>java ExceptionTest
27
254.34


就是这结果,很是郁闷啊。
作者: 刘伯阳    时间: 2012-5-31 21:59
本帖最后由 刘伯阳 于 2012-5-31 22:07 编辑

第一段程序,没有主类。还有最后 c.getArea(); 这句语句是什么都得不到的,估计你是想输出结果吧,那应该是 System.out.println(c.getArea());
具体代码我改了改,你运行下:
interface Shape
{
        double getArea();
}

class Rec implements Shape
{
        private int len,wid;
        
        Rec(int len,int wid)
        {
                this.len = len;
                this.wid = wid;
        }

        public double getArea()
        {
                return len * wid;
               
        }
}

public class Test
{
        public static void main(String[] args)
        {
                Rec c = new Rec(3,9);
                System.out.println(c.getArea());
        }
}

第二段程序:你再Crcel类里面不是定义了方法了吗
public void getArea()
        {
                System.out.println(r*r*PI);
        }   
负数乘以负数肯定还是正数啊!...

还有我想楼主是想弄个圆的类吧,圆的单词是circle,可能是粗心了吧~
作者: 徐炯    时间: 2012-5-31 22:45
LZ!你的Crecl类中

    public void getArea()
        {
                System.out.println(r*r*PI);
        }        


你看看这个r*r*PI,负负得正啊,输入负数还是正数啊!...


如果你觉得输入负数不行,你可以把上述代码改为:

   public void getArea()
        {
                if(r<0)
                       {
                        System.out.println(“您的输入有误!圆的半径不能为负数!”);
                       }
                else  {
                System.out.println(r*r*PI);
                }
        }   

希望能帮到你!   






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