[英]Sorting array with non initialised elements
我的代码可以按字母顺序对我的第一个名称数组进行排序,然后对相应的分数数组进行排序,以便他们正确的学生拥有正确的分数。 我的问题是nullPointerException
错误。 据我了解,此错误是由于某些数组元素未初始化引起的,如果某些索引未初始化,我是否仍然可以对数组进行排序?
static String[] studentNamesArray = new String[10];
static int[][] studentMarksArray = new int[10][3];
static void sortAlphabetical() {
String nameSwap;
int [] markSwap;
boolean flag = false;
while (!flag) {
flag = true;
for (int i = 0;i < 9;i++) {
if (studentNamesArray[i].compareTo(studentNamesArray[i + 1]) > 0) {
nameSwap = studentNamesArray[i];
studentNamesArray[i] = studentNamesArray[i + 1];
studentNamesArray[i + 1] = nameSwap;
markSwap = studentMarksArray[i];
studentMarksArray[i] = studentMarksArray[i + 1];
studentMarksArray[i + 1]= markSwap;
flag = false;
}
}
}
}
是。 代替
if (studentNamesArray[i].compareTo(studentNamesArray[i + 1]) > 0) {
尝试使用三元,否则可以使用if-这是三元。
int compare = (studentNamesArray[i] == null) ? -1 :
studentNamesArray[i].compareTo(studentNamesArray[i + 1]);
if (compare > 0) {
三元等价于
int compare;
if (studentNamesArray[i] == null) {
compare = 1;
} else {
compare = studentNamesArray[i].compareTo(studentNamesArray[i + 1]);
}
读者可以练习其他更复杂的方法。
为了使其正常工作,我制作了一个全局变量来检查数组中已经输入了多少个元素,然后如下修改我的代码:
static void sortAlphabetical() {
String nameSwap;
int [] markSwap;
boolean flag = false;
while (!flag) {
flag = true;
for (int i = 0;i < nameArrayCount-1;i++) {
if (studentNamesArray[i].compareTo(studentNamesArray[i + 1]) > 0) {
nameSwap = studentNamesArray[i];
studentNamesArray[i] = studentNamesArray[i + 1];
studentNamesArray[i + 1] = nameSwap;
markSwap = studentMarksArray[i];
studentMarksArray[i] = studentMarksArray[i + 1];
studentMarksArray[i + 1]= markSwap;
flag = false;
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.