gpt4 book ai didi

java - 无法理解 Arrays.sort() 功能

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

我是 Java 新手,我正在尝试了解比较器接口(interface)。我尝试了以下代码:

package comparator;

import java.io.*;
import java.util.*;

public class comparator {
public static void main(String args[]){
bankAccount[] ba=new bankAccount[500];
ba[0]=new bankAccount(50);
ba[1]=new bankAccount(90);
ba[2]=new bankAccount(20);
Comparator c=new comparing();
System.out.println(c.compare(ba[0], ba[1]));
Arrays.sort(ba, c);
}
}

class bankAccount{
public bankAccount(double bal){
balance=bal;
}
public double balance;
}

class comparing implements Comparator{
public int compare(Object first, Object second){
bankAccount ba1=(bankAccount)first;
bankAccount ba2=(bankAccount)second;
int retval;
if(ba1.balance<ba2.balance){
retval=-1;
}
else if(ba1.balance>ba2.balance){
retval=1;
}
else{
retval=0;
}
return retval;
}
}

我收到以下错误消息:

Exception in thread "main" java.lang.NullPointerException
at comparator.comparing.compare(comparator.java:29)
at java.util.TimSort.binarySort(TimSort.java:265)
at java.util.TimSort.sort(TimSort.java:208)
at java.util.TimSort.sort(TimSort.java:173)
at java.util.Arrays.sort(Arrays.java:659)
at comparator.comparator.main(comparator.java:13)

我可以知道错误是什么吗?我应该如何使用 Arrays.sort() 方法。任何帮助将不胜感激。

最佳答案

在您的 main 方法中,您声明了一个 500 长度的数组,但只初始化了 3 个元素,因此其中 497 个为 null。这会导致比较器出现问题,因为会为许多元素对调用比较器,其中包括一些 null 元素。

尝试修改您的 main 方法,使其仅声明并初始化一个 3 长度的数组,然后再次编译并运行它。也许您的比较器确实有问题,但至少让我们消除明显的问题并尝试对所有非 null 元素进行排序。

关于java - 无法理解 Arrays.sort() 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19804638/

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