我执行了以下代码,当我尝试将其打印出来时除了0.0打印之外没有任何值:
public class RegularPolygon {
private int numSides; //# sides
private double sideLength; //side length
private double inscribedRadius; //radius of inscribed circle
private void calcr(){
inscribedRadius = .5 * sideLength * 1/Math.tan(Math.PI / numSides);
}
}
public double getr(){
return inscribedRadius;
}
主要:
RegularPolygon poly = new RegularPolygon(4, 10);
System.out.println(poly.getr());
输出:
0.0
构造
public RegularPolygon(int newNumSides, double newSideLength){
numSides = newNumSides;
sideLength = newSideLength;
}
什么阻止它打印出来?
答案 0 :(得分:1)
由于您的构造函数未初始化inscribedRadius
而您尚未调用calcr()
,因此inscribedRadius
的值仍为0,这是在实例初始化期间分配给基本字段的默认值
RegularPolygon poly = new RegularPolygon(4, 10);
poly.calcr();
System.out.println(poly.getr());
只有在RegularPolygon
课程中执行上述代码时才可以这样做。因为您的方法是private
,所以在该类之外不可见。在这种情况下,您需要设置您的设计,以便在内部调用calcr()
。
答案 1 :(得分:1)
// Just edit your getr() function. You have to call calcr() function
public double getr(){
calcr();
return inscribedRadius;
}
答案 2 :(得分:0)
尝试在RegularPolygon类中添加它
public RegularPolygon(int numSides, double sideLength){
this.numSides=numSides;
this.sideLength=sideLength;
}
然后拨打calcr();
答案 3 :(得分:0)
您需要添加构造函数来设置您定义的字段的值,然后调用其中的calcr()
函数,以计算{{1}的值}。此外,getr()应该可以在inscribedRadius
类中移动。
例如:
RegularPolygon
有关此代码的正在运行示例,请参阅http://ideone.com/lxcmlH。
答案 4 :(得分:0)
修改构造函数以计算半径
public RegularPolygon(int newNumSides, double newSideLength){
numSides = newNumSides;
sideLength = newSideLength;
this.calcr();
}
答案 5 :(得分:0)
当实例化类RegularPolygon时,因为你没有给字段inscribedRadius提供初始化值,所以它的字段inscribedRadius将被初始化为0.0。在调用poly.getr()之前,你什么都不做,所以打印输出只能是0.0。
答案 6 :(得分:0)
您是否在课程中添加了构造函数?
如果没有添加
public RegularPolygon(int numSides, double sideLength){
this.numSides=numSides;
this.sideLength=sideLength;
}
然后致电
poly.calcr();
在打印值之前。
你得到0.0因为你没有使用valralble并且你也没有调用方法来计算inscribedRadius
。
如果您没有初始化任何int或double变量,则默认启动将为0.这就是您获取0.0
的原因。