【发布时间】:2018-03-09 02:35:27
【问题描述】:
理想情况下,我不希望它是静态的或无效的。这是我目前可以让它工作的唯一方法。
我有一个 Shape 超类。它有一个 area() 方法,我在 Rectangle 类和 Circle 类中 @Override。在我使用 File IO 的主要方法中。我正在尝试制作一种方法来遍历我的 ArrayList of Shapes,以找到最大的 area()。
当我尝试不同的事情时,我得到了几个不同的错误。当我尝试类似的东西时,形状最大 = 最大.get(0).area();我收到一条错误消息,说我无法将双精度转换为形状。
我希望能够从我的arrayList 中获取一个区域,然后将其与该ArrayList 中的其他区域进行比较,并执行排序方法以找到最大的并将其存储并返回。另外,当我尝试返回时,它不会让我这样做,因为它不是静态的。
但我不能将其他方法设为静态,这不是设计的一部分。 以下是我一直在尝试使用 foreach 的方法,我知道这是不对的,但我可以潜在地使用它吗?我怎样才能让它存储我创建的对象 e 而不会每次都覆盖它?
如果上传更多代码会有帮助,请告诉我。
Java
public static void shapeWithLargestArea(ArrayList<Shape> shapes) {
for(Shape e: shapes) {
double largest = e.area();
if (e.area() > largest) {
largest = e.area();
}
System.out.println(largest);
} // end for each loop
} // end largest area method
【问题讨论】:
-
我的第一条评论是针对 .net 的,所以我已将其删除...但您可以实现 docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html 然后对集合进行排序,以便您的实现将集合按从大到小的顺序排列排序中。
标签: java object arraylist foreach