package programList;
public class TestCircleWithException{
public static void main(String[] args){
try{
CircleWithException c1 = new CircleWithException(5);
CircleWithException c2 = new CircleWithException(-5);
CircleWithException c3 = new CircleWithException(0);
}
catch(IllegalArgumentException ex){
System.out.println(ex);
}
System.out.println("Number of objects created: " + CircleWithException.getNumberOfObjects());
}
}
class CircleWithException{
private double radius;
private static int numberOfObjects = 0;
public CircleWithException(){
this(1.0);
}
public CircleWithException(double newRadius){
setRadius(newRadius);
numberOfObjects++;
}
public double getRadius(){
return radius;
}
public void setRadius(double newRadius)throws IllegalArgumentException{
if(newRadius >= 0)
radius = newRadius;
else
throw new IllegalArgumentException("Radius cannot be negative");
}
public static int getNumberOfObjects(){
return numberOfObjects;
}
public double findArea(){
return radius * radius *Math.PI;
}
}
想问下numberOfObjects为啥是1;
Java
------解决方案--------------------
因为在CircleWithException c2 = new CircleWithException(-5)这一句的时候由于是 -5 所以就报异常了,结果后两句的new根本就没起作用。你在numberOfObjects++;后面加一句System.out.println(numberOfObjects);就验证出来了。你把-5改为正的就可以出3了。
------解决方案--------------------
是调用了构造方法,只是没执行完呀,第一行代码就异常了,结果直接出了try了,构造方法中和try中剩余的代码都没被运行到呀