黑马程序员技术交流社区
标题:
又是代码。<已解决>
[打印本页]
作者:
王德升
时间:
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