我正在尝试按区域对形状列表进行排序。我正在使用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);
}
}
}
替换
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());
}