3 回答

TA貢獻1770條經驗 獲得超3個贊
你可以
截斷數組以刪除null元素
String[] sorteerArray = new String[25];
int nbValue = 0;
for (int i = 0; i < 25; i++) {
System.out.print (i + 1 );
invoer = sc.nextLine();
sorteerArray[i] = invoer;
nbValue++;
if ("".equals(invoer)) {
break;
}
}
sorteerArray = Arrays.copyOf(sorteerArray, nbValue);
Arrays.sort(sorteerArray);
用一個 List
List<String> sorteerList= new List<String>();
for (int i = 0; i < 25; i++) {
System.out.print (i + 1 );
invoer = sc.nextLine();
sorteerList.add(invoer);
if ("".equals(invoer)) {
break;
}
}
sorteerList.sort(Comparator.naturalOrder());

TA貢獻1936條經驗 獲得超7個贊
您可以使用“”初始化字符串數組。例如-
for(int i=0;i<25;i++){
sorteerArray[i]="";
}
或者您可以使用集合即列表來擁有動態大小的數組。

TA貢獻1780條經驗 獲得超4個贊
想想如果你輸入""第三個字符串會發生什么。
所以你的循環中斷了,數組中的一些值仍然是String的默認值,在這種情況下是null.
這使得sort嘗試與null其他字符串進行比較(您可以在線閱讀如何.sort工作)。
要解決此問題,您應該在循環之前添加以下內容:
for (int i = 0; i < sorteerArray.length; i++) {
sorteerArray[i]="";
}
如果您使用調試器檢查代碼,您將能夠看到數組中的所有值,在 , 之后""都是null. 所以在sort運行時,它會比較數組的值,并在某個時候到達null,導致NullPointerException.
我上面寫的代碼將用空字符串初始化數組,以便可以比較它們。
添加回答
舉報