3 回答

TA貢獻(xiàn)1770條經(jīng)驗(yàn) 獲得超3個(gè)贊
你可以
截?cái)鄶?shù)組以刪除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);
用一個(gè) 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貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以使用“”初始化字符串?dāng)?shù)組。例如-
for(int i=0;i<25;i++){
sorteerArray[i]="";
}
或者您可以使用集合即列表來擁有動(dòng)態(tài)大小的數(shù)組。

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