价值不打印(java)?

时间:2013-10-10 01:09:12

标签: java return

我执行了以下代码,当我尝试将其打印出来时除了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;
}

什么阻止它打印出来?

7 个答案:

答案 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的原因。