gpt4 book ai didi

Java 对并行数组进行排序,需要帮助(NullPointerException 错误)

转载 作者:行者123 更新时间:2023-12-02 08:26:58 25 4
gpt4 key购买 nike

好吧,我正在尝试为我的 java 类完成这个程序,但我在这一部分上遇到了麻烦。除了这个之外,其他一切都正常。我有 3 个数组,1 个字符串,2 个 int 类型,都是并行的。我必须按名称然后按数字将它们按字母顺序排序(首先使用字符串数组,然后使用第一个 int 数组,排序不受第三个数组的影响,它在那里练习三维并行)

这是我到目前为止的代码。

    public static void sortDatabase(int numRecords, String[] sDeptArr, 
int[] iCourseNumArr, int[] iEnrollmentArr)
{
System.out.println("Sort the database. \n");
String sTemp = null;
int iTemp = 0;
int eTemp = 0;
for(int i=0; i<numRecords; i++)
{
int iPosMin = i;
for(int j=i+1; j<numRecords; j++)
{
String a = sDeptArr[j];
String b = sDeptArr[iPosMin];
if(a.compareTo(b) != 0)
iPosMin = j;
else if(!sDeptArr[j].equals(sDeptArr[iPosMin]) && iCourseNumArr[j] < iCourseNumArr[iPosMin])
iPosMin = j;
}
sDeptArr[i] = sTemp;
sDeptArr[i] = sDeptArr[iPosMin];
sDeptArr[iPosMin] = sTemp;
iCourseNumArr[i] = iTemp;
iCourseNumArr[i] = iCourseNumArr[iPosMin];
iCourseNumArr[iPosMin] = iTemp;
iEnrollmentArr[i] = eTemp;
iEnrollmentArr[i] = iEnrollmentArr[iPosMin];
iEnrollmentArr[iPosMin] = eTemp;
}
}

必须用java来完成。我在第 15 行收到错误,其中包含

if(a.compareTo(b) != 0)

我收到了 NullPointerException。

基本上,我对假类(class)名称和类(class)编号进行排序,同时保持注册人数与其对应的类(class)名称和编号索引并行。

最佳答案

在第二个循环(for (int j=... one))之后,您将获得以下代码:

       sDeptArr[i] = sTemp;
sDeptArr[i] = sDeptArr[iPosMin];
sDeptArr[iPosMin] = sTemp;

通过仔细阅读代码,我的理解是您正在尝试交换 sDeptArr[i]sDeptArr[iPosMin] 中的元素,但是,您的分配不正确.

考虑到这是家庭作业,我认为你应该尝试找出为什么这段代码不起作用,并给出它的结果。您可以在调试器中单步执行代码,或者(假设它相当简单)在您的头脑中单步执行代码。

关于Java 对并行数组进行排序,需要帮助(NullPointerException 错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4308367/

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