java - 试图编写一个方法来从数组中找到最大的对象
问题描述
将方法 public static Measurable max(Measurable[] objects) 添加到返回具有最大度量的对象的 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
方法应该是这样的:
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
推荐阅读
- c# - 扩展事件结果 sql_text 忽略注释如何在 sql_text 中允许注释
- kubernetes - Kubernetes 创建 statefulset 失败
- python - 为什么 matplotlib bar3d 绘制自动反转 x 轴?
- php - Trying to install the GMP extension on Docker / php:5.3
- assembly - x86_64 Cannot add 64 bit value to rax, "operand mismatch on 'add'"
- php - MySQL 或 PHP 不断返回 null
- sql - Write a select query that displays "id" if a different "id" has same "panum"
- react-native - React Native - 拒绝任何获取调用,iOS 应用程序 - 这不是因为 HTTP
- ffmpeg - 在 Windows 上启用 libvpx 编译 ffmpeg 库
- scala - 为什么没有 else 块会转换为函数的 Unit 类型返回?