gpt4 book ai didi

java - 如何在使用比较器接口(interface)时获取矩形对象的数组列表以显示每个矩形的面积

转载 作者:行者123 更新时间:2023-12-02 10:33:49 24 4
gpt4 key购买 nike

我有一个 Rectangle 类,部分代码使用以下方法查找矩形类的面积:

public double calculateArea() {return this.width * this.height;}

我必须创建第二个名为 RectangleComparator 的类,并实现比较器接口(interface)来根据面积比较两个 Rectangle 对象。以下代码是我为此想到的:

import java.util.Comparator;

public class RectangleComparator implements Comparator<Rectangle> {

public int compare(Rectangle r1, Rectangle r2) {

double areaDifference = r1.calculateArea() - r2.calculateArea();
if (areaDifference != 0) {return (int) areaDifference;}

if (areaDifference < 0) {return -1;}
else if (areaDifference == 0) {return 0;}
else {return 1}
}
}
}

我必须创建的最后一个类是 RectangleSortTest 类,其中该方法创建一个包含五个 Rectangle 对象的列表,而不是按区域顺序排列。该方法应该打印列表,显示每个矩形的面积。然后对列表进行排序,并再次打印列表,显示列表已按区域排序。以下是我的想法:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class RectangleSortTest {

public static void main(String[] args) {

List<Rectangle> list = new ArrayList<>();

list.add(new Rectangle (12, 15));
list.add(new Rectangle (5, 2));
list.add(new Rectangle (19, 10));
list.add(new Rectangle (9, 5));
list.add(new Rectangle (6, 10));

System.out.printf("Unsorted list elements:%n%s%n", list);

Collections.sort(list, new RectangleComparator());

System.out.printf("Sorted list elements: %n%s%n", list);
}
}

一切似乎都运行正常,但是当我运行程序并显示以下结果时:

未排序的列表元素:[矩形@7852e922、矩形@4e25154f、矩形@70dea4e、矩形@5c647e05、矩形@33909752]排序后的列表元素:[矩形@4e25154f、矩形@5c647e05、矩形@33909752、矩形@7852e922、矩形@70dea4e]

如果你看一下它,对象似乎排序正确,但我不明白为什么它不会显示每个三角形的面积,而不是我得到的结果。

如有任何帮助,我们将不胜感激。

最佳答案

您的 toString 实现不会输出区域 - 它使用默认实现。您需要重写它以根据您的矩形生成可用的字符串。 (注意 - 我说“你的”矩形,因为很明显你没有使用 java.awt.Rectangle,它在其 toString 中输出 x,y,w,h 属性> 实现)

旁注 - 您的 compare 实现过于复杂。为什么不直接return (int) areaDifference

关于java - 如何在使用比较器接口(interface)时获取矩形对象的数组列表以显示每个矩形的面积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53451670/

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