gpt4 book ai didi

java - 实例化类不起作用,构造函数参数未传递

转载 作者:行者123 更新时间:2023-11-30 06:04:40 27 4
gpt4 key购买 nike

我尝试从测试类初始化一个圆形对象,但参数(5.5)没有通过。结果是错误的。我尝试调试并发现圆类中的半径为0.00,5.5没有传递到圆类中。有人可以帮我吗?

这是我的输出:

The area of circle is:  3.14

这是我的测试类:

public class ShapeTest {
public static void main(String[] args){
Circle circle = new Circle(5.5);
System.out.println(circle);
}


}
}

这是我的圈子类:

public class Circle extends TwoDimensionalshape {
private double radius;

public Circle(double radius){
super(radius);
}

public void setRadius(double radius){
this.radius = radius;
}
public double getRadius(){
return radius;
}

@Override
public double getArea(){
return 3.14+getRadius()+getRadius();
}

@Override
public String toString(){
return String.format("%s %,.2f%n ","The area of circle is: ",getArea());
}



}

这是我的 super 类(class):

public class TwoDimensionalshape implements Area{
private double radius;
private double base;
private double height;

public TwoDimensionalshape(double radius){
this.radius = radius;
}

public TwoDimensionalshape(double base, double height){
this.base = base;
this.height = height;
}

public double getRadius() {
return radius;
}


public double getBase() {
return base;
}

public double getHeight() {
return height;
}

@Override
public double getArea(){
return 1;
}

public String toString(){
return "The area is: "+getArea();
}


}

最佳答案

Circle 中的 radius 变量隐藏 TwoDimensionalshape 中的 radius 变量。它们是两个不同的变量。您的构造函数设置了 TwoDimensionalShape 中的值,但 getArea 使用的是 Circle 中的值。

删除Circle中的radius变量。通过从 Circle 中删除该方法,让 Circle 继承 getRadius。同样在Circle中,将setRadius移动到TwoDimensionalShape

此外,在 getArea 中,将半径乘以两倍,而不是相加两次。您还可以使用 Math.PI 代替 3.14

return Math.PI * getRadius() * getRadius();

关于java - 实例化类不起作用,构造函数参数未传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48834835/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com