gpt4 book ai didi

java - 如何比较对象数组列表中的一个值以输出最大值?

转载 作者:行者123 更新时间:2023-12-01 12:25:31 24 4
gpt4 key购买 nike

我需要创建一个方法 getLargestObject() 来查找数组列表中面积最大的对象,返回其位置并输出对象的内容。我当前使用的循环不起作用,我不确定如何比较数组列表中区域的值,以便获得最大的值。

package csu.cole;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Driver {
public static void main(String[] args) throws FileNotFoundException {
Scanner input = new Scanner(new File(
"C:/Users/Charles/Desktop/GeometricObjectsData.txt"));

ArrayList<GeometricObject> list = new ArrayList<GeometricObject>();


while (input.hasNextLine()) {
String line = input.nextLine();
String[] tokens = line.split(", ");
if (tokens[0].equals("CIRCLE")) {
Circle c = new Circle();
if (tokens.length == 4) {
float radius = Float.parseFloat(tokens[1]);
c.setRadius(radius);
String color = String.valueOf(tokens[2]);
c.setColor(color);
Boolean filled = Boolean.valueOf(tokens[3]);
c.setFilled(filled);
c.getArea();
list.add(c);
System.out.println(c.toString());
} else if (tokens.length == 3) {
float radius = Float.parseFloat(tokens[1]);
c.setRadius(radius);
String color = String.valueOf(tokens[2]);
c.setColor(color);
Boolean filled = false;
c.setFilled(filled);
c.getArea();
list.add(c);
System.out.println(c.toString());
} else if (tokens.length == 1) {
String color = "white";
c.setColor(color);
Boolean filled = false;
c.setFilled(filled);
c.getArea();
list.add(c);
System.out.println(c.toString());
}
} else if (tokens[0].equals("RECTANGLE")) {
Rectangle r = new Rectangle();
if (tokens.length == 5) {
float height = Integer.parseInt(tokens[1]);
r.setHeight(height);
float width = Integer.parseInt(tokens[2]);
r.setWidth(width);
String color = String.valueOf(tokens[3]);
r.setColor(color);
Boolean filled = Boolean.valueOf(tokens[4]);
r.setFilled(filled);
r.getArea();
list.add(r);
System.out.println(r.toString());
} else if (tokens.length == 1) {
String color = "white";
r.setColor(color);
Boolean filled = false;
r.setFilled(filled);
r.getArea();
list.add(r);
System.out.println(r.toString());
}
}
}

}
public int getLargestObject() {
int max = Integer.MIN_VALUE;
for (int = 0; i < list.size(); i++){
if (list.get(i) > max){
max = list.get(i);
}
}
return max;
}
}

最佳答案

Collections#max 很有趣,但很高级。看来你只需要改变你的 if 语句

 if (list.get(i) > max){

使用该区域所以

 if (list.get(i).getArea() > max){

但是你说“返回其位置并输出对象的内容”,因此使用 max 来跟踪位置,而不是对象

    public int getLargestObjectIndex() {
int maxIndex = 0;
for (int = 1; i < list.size(); i++){
// compare the area of the current index to the max index
if (list.get(i).getArea() > list.get(maxIndex).getArea()){
// if this one is bigger, save the location
maxIndex = i;
}
}
// output the contents of the object
System.out.println(list.get(maxIndex).toString())
// return the location
return maxIndex;
}

请注意,此循环从 i = 1 开始,因为 maxIndex 从 0 开始

关于java - 如何比较对象数组列表中的一个值以输出最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26374442/

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