【问题标题】:Trying to write a method to find the largest object from an array试图编写一个方法来从数组中找到最大的对象
【发布时间】:2020-08-30 03:50:34
【问题描述】:

添加方法 公共静态可测量最大值(可测量 [] 对象) 到返回具有最大度量的对象的 Data 类。

这就是我的代码。

public interface Measurable
{
double getMeasure();
}

public class MeasurableTester {

public static void main(String[] args) {
    Measurable[] accounts = new Measurable[3];
    accounts[0] = new BankAccount(0);
    accounts[1] = new BankAccount(10000);
    accounts[2] = new BankAccount(2000);
    
    double averageBalance = Data.average(accounts);
    System.out.println("Average balance: " + averageBalance);
    System.out.println("Expected: 4000");
    
    Measurable[] countries = new Measurable[3];
    countries[0] = new Country("Uruguay", 176220);
    countries[1] = new Country("Thailand", 513120);
    countries[2] = new Country("Belgium", 30510);
    
    double averageArea = Data.average(countries);
    System.out.println("Average area: " + averageArea);
    System.out.println("Expected: 239950");
}

}`

''' 以及我遇到问题的部分 '''

public class Data {
     Object tempObj = new Object();

public static double average(Measurable[] objects){
    double sum = 0;
    for (Measurable obj : objects){
        sum = sum + obj.getMeasure();
    }
    if (objects.length > 0) {
        return sum / objects.length;
    }else{
        return 0;
    }
}

'''

//我在这里想出一个方法

public static Measurable max(Measurable[] objects){
    double max = 0;
    for (Measurable obj : objects){
      if (obj.getMeasure() > max){
          obj =  max;
      }  
    }
   return max;
  }
 }

【问题讨论】:

  • 您无法在 max 方法中分配 max 变量。

标签: java arrays object max


【解决方案1】:

max 方法应该是这样的:


public static Measurable max(Measurable[] objects) {
   Measurable max = null;
   for (Measurable obj : objects) {
       if (max == null || obj.getMeasure() > max.getMeasure()) {
              max = obj;
       }  
    }
       return max;
}

如果您使用的是 Java 8,您可以这样做:

public static Measurable max(Measurable[] objects) {
  return Arrays.stream(objects).max(Comparator.comparing(Measurable::getMeasure)).get();
}

另外,使用

for (Measurable obj : objects){

没有null 检查是NullPointerException 的秘诀。

---- 编辑 ------
使用max 方法:

Measurable max = Data.max(countries) // gives max measure containing object
System.out.println(max.getMeasure()) // prints the max measure value

【讨论】:

  • 我的 NetBeans 不喜欢你的命令。它找不到数组、比较器或度量。 @Adarsh
  • @Travis 您需要导入相关类。 :) 从Measure 开始,它是Measurable。这是帮助您的快速参考。更新了答案。顺便说一句,您需要添加的导入是:import java.util.Arrays; import java.util.Comparator;
  • 如何在 Main 中测试该方法?我创建了:对象 tempObj2 = new Object();然后为了测试它我做了 tempObj2 = Data.max(countries);当我打印结果时,它给了我最大国家大小:measurabletester.Country@119d7047。 @Adarsh
猜你喜欢
  • 2015-06-08
  • 1970-01-01
  • 2015-10-13
  • 2015-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多