[英]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.