尝试使用for循环打印形状时出错

时间:2018-05-09 05:19:41

标签: java

基本上我的老师希望我们使用这种方法打印我的ArrayList中的每个形状

for (Shape shape: shapes) {
    // this following is the same as: System.out.println(shape.toString());
    System.out.println(shape);
}

她根本不清楚,所以我不知道我应该填写什么。如果有人知道她想解释什么,你能告诉我一个例子吗?

我不是要求为我编写代码只是想要一个例子,所以我可以理解它。

感谢大家的时间。

完整代码

import java.util.ArrayList;

public class FinalExam {
    public static void main(String[] args) {

        ArrayList<Shape> shapes = new ArrayList<Shape>();

        Circle circle5 = new Circle();
        circle5.setValues(5.0);

        Rectangle square5 = new Rectangle();
        square5.setValues(5.0, 5.0);

        Triangle triangle5 = new Triangle();
        triangle5.setValues(5.0, 5.0);

        Circle circle3 = new Circle();
        circle3.setValues(3.0);

        Rectangle square3 = new Rectangle();
        square3.setValues(3.0, 3.0);

        Triangle triangle3 = new Triangle();
        triangle3.setValues(3.0, 3.0);

        shapes.add(circle5);
        shapes.add(square5);
        shapes.add(triangle5);
        shapes.add(circle3);
        shapes.add(square3);
        shapes.add(triangle3);
    }

    public void  printShapes() {
        for (Circle element: Circle) {
            // this following is the same as: System.out.println(shape.toString());
            System.out.println(element);
        }
    }
}

圈子类

public class Circle extends Shape {
    private double Radius;  // To hold Radius.

    // Set Radius
    public void setValues(double Radius) {
        this.Radius = Radius;
    }

    //Get Radius
    public double getRadius() {
        return Radius;
    }

    public double getArea() {
        return (Math.PI * Radius *Radius);
    }

    @Override
    public String toString() {
        return "Circle" +"[Radius:" + getRadius() + "] Area:" + String.format("%.02f", getArea());
    }
}

1 个答案:

答案 0 :(得分:1)

以下是FinalExam课程的更正版本:

public class FinalExam {
    public static void main(String[] args) {
        ArrayList<Shape> shapes = new ArrayList<Shape>();

        // define and add shapes here

        printShapes(shapes);
    }

    public static void printShapes(List<Shape> list) {
        for (Shape shape : list) {
            System.out.println(shape);
        }
    }
}

您的迭代语法不正确,而且我认为这两种方法都应该是static(假设main是静态的,并且您想要使用它)。在上面的版本中,我将形状列表传递给打印方法,但您也可以通过其他方式处理。