【问题标题】:Double keeps returning as 0.0Double 一直返回为 0.0
【发布时间】:2016-07-31 00:26:07
【问题描述】:

所以我的问题很简单,我正在尝试实现方法形状并尝试打印出球体和圆锥体的半径、面积和体积。现在我不是在寻求家庭作业的帮助,所以请耐心等待。只是一些关于为什么我的替身没有拿出我想要的变量的知识。

所以目前我要做的就是使用 toString 方法打印半径“+ r”的“A”+name+“

应该只是“半径为 6.3 的球体” 但是,当我运行我的程序时,会输出“半径为 0.0 的球体”

这是我的代码:

//Main Class    
public class CircleShape
{
    String name;  
    double radius;
    double area;
    double volume;

    CircleShape(){
    }
        CircleShape(String n, double r, double a, double v)
    {
        name = n;
        radius = r;
        area = a;
        volume = v;
    } 
}

//Extension
public class SphereShape extends CircleShape
{
    public String name;
    public double r;


    public SphereShape(String n, double r)
    {
        name = n;
        radius = r;
    }

    public String getName(String name)
    {
        return name;
    }

    public void setName(String n)
    {
        name = n;
    }

    public double getRadius()
    {
        return radius;
    }

    public void setRadius(double r)
    {
    radius = r;
    }

    public String toString()
    {
    return "A " + name + " of radius " + r;
}


}
//Driver/Tester
public class CircleShapeTest extends CircleShape
{

    public static void main(String[] args)
    {
         SphereShape sph = new SphereShape("sphere", 6.3);


         System.out.println(sph);

   }
}

【问题讨论】:

  • 另外,当我编译时,我没有收到任何错误:/

标签: java class inheritance tostring


【解决方案1】:

您从未设置类 var r,您正在设置 radiusCircleShape,但从不使用此 var。

改变 return "A " + name + " of radius " + r;return "A " + name + " of radius " + radius;

【讨论】:

  • *捂脸!谢谢! @tobltobs
【解决方案2】:

不要在子类中重新声明相同的字段。 CircleShape 中的四个声明已经足够好了,可以通过SphereShape 进行设置和访问。重新创建新字段是不必要且令人困惑的,并且会导致您的错误。

【讨论】:

  • 啊,好建议。只是擦除了 dups 并编译得很好。
猜你喜欢
  • 1970-01-01
  • 2014-11-17
  • 2013-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多