使用迭代器调用多参数方法

问题描述 投票:0回答:1

我正在尝试按区域对形状列表进行排序。我正在使用Iterator在列表中移动并在列表的每个元素上调用Rectangle.calculateArea,但是打印的列表不会输出每个元素的面积。输出是对每个元素的十六进制引用。下面是输出,后跟代码。如何使我的输出显示计算面积?

矩形区域:矩形@ 15db9742矩形@ 6d06d69c矩形@ 7852e922矩形@ 4e25154fRectangle @ 70dea4e

public class RectangleSortTest {
public static void main (String[] args) {
List<Rectangle> list = new ArrayList<>();
//Create Rectangle ArrayList

list.add(new Rectangle(4, 3));
list.add(new Rectangle(3, 3));
list.add(new Rectangle(4, 4));
list.add(new Rectangle(5, 1));
list.add(new Rectangle(1, 1));
//Add Rectangle elements to Rectangle list



calculateListArea(list);
//Calculates area for each rectangle element

System.out.print("Rectangle Areas:");
printList(list);
//Print rectangle list after area calculation


}

private static void calculateListArea(List<Rectangle> list) {//Calculates Rectangle list areas
    ListIterator<Rectangle> iterator = list.listIterator();

    while (iterator.hasNext()) {
        Rectangle rectangleElement = iterator.next();
        Rectangle.calculateArea(rectangleElement.getWidth(), rectangleElement.getHeight());
    }
}

private static void printList(List<Rectangle> list) {//Print Rectangle list
    for (Rectangle element: list) {
        System.out.printf("%n%s", element);
    }   
}

}

java
1个回答
0
投票

替换

Rectangle.calculateArea(rectangleElement.getWidth(), rectangleElement.getHeight());

with

rectangleElement.calculateArea(rectangleElement.getWidth(), rectangleElement.getHeight());

顺便说一下,为什么不将其简化如下?

private static void calculateListArea(List<Rectangle> list) {//Calculates Rectangle list areas
    for(Rectangle rectangle:list)
        rectangle.calculateArea(rectangleElement.getWidth(), rectangleElement.getHeight());
}
© www.soinside.com 2019 - 2024. All rights reserved.