Получение неправильного значения при использовании переопределенного метода toStringJAVA

Программисты JAVA общаются здесь
Anonymous
Получение неправильного значения при использовании переопределенного метода toString

Сообщение Anonymous »

Я использую массив для хранения различных объектов формы, которые являются подклассом абстрактного суперкласса. Суперкласс содержит два абстрактных метода: Surface_area и Volume соответственно. После добавления объектов в список массивов я хочу вывести на консоль результаты методов площади поверхности и объема, используя переопределение метода toString. Однако при запуске кода я получаю просто 0,0 вместо фактического значения. Что я делаю не так?

Код: Выделить всё

public abstract class Shape {
abstract double surface_area();
abstract double volume();
}

public class Sphere extends Shape {
public double radius = 5;
private double sphere_Volume;
public double sphere_SA;

@Override
public double surface_area() {
sphere_SA = (4 * Math.PI * Math.pow(radius, 2));
return sphere_SA;
}

@Override
public double volume() {
sphere_Volume = (4/3 * Math.PI * Math.pow(radius, 3));
return sphere_Volume;
}

@Override
public String toString() {
String SA_String = String.valueOf(sphere_SA);
return SA_String;
}
}

import java.util.ArrayList;

public class ShapeArray {
public static void PrintShape (ArrayList shapeArray) {
for (int i = 0; i < shapeArray.size(); ++i) {
System.out.println(shapeArray.get(i));
}
}
public static void main(String[] args) {
ArrayList shapeArray = new ArrayList();

shapeArray.add(new Sphere());
shapeArray.add(new Cylinder());
shapeArray.add(new Cone());

PrintShape(shapeArray);
}

}

Я протестировал функции площади поверхности и объема, чтобы убедиться, что они работают правильно, создав экземпляр объекта сферы и используя метод .get, чтобы увидеть значениеSphere_SA, и это правильно. , однако при запуске через функцию PrintArray он возвращает просто нули.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ing-method

Вернуться в «JAVA»