亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用后初始化數組

使用后初始化數組

MMTTMM 2021-11-17 15:09:59
所以這是我的代碼:import java.util.Arrays;import java.util.Scanner;public class Test9 {public static void main (String[] args) {    Scanner sc = new Scanner(System.in);    String invoer = null;    String[] sorteerArray = new String[25];    for (int i = 0; i < 25; i++) {        System.out.print (i + 1 );        invoer = sc.nextLine();        sorteerArray[i] = invoer;        if ("".equals(invoer)) {            break;        }    }    Arrays.sort(sorteerArray);    for (String sorteerArrayOutput : sorteerArray) {        System.out.println (sorteerArrayOutput);    }}}我得到一個 NullPointerException,因為當我嘗試對我的數組進行排序時,數組中有空值,那是因為我用 25 初始化了我的數組。我知道問題是什么,我只是不知道如何解決它。提前致謝 :)。
查看完整描述

3 回答

?
德瑪西亞99

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());


查看完整回答
反對 回復 2021-11-17
?
LEATH

TA貢獻1936條經驗 獲得超7個贊

您可以使用“”初始化字符串數組。例如-


for(int i=0;i<25;i++){

    sorteerArray[i]="";

}

或者您可以使用集合即列表來擁有動態大小的數組。


查看完整回答
反對 回復 2021-11-17
?
Helenr

TA貢獻1780條經驗 獲得超4個贊

想想如果你輸入""第三個字符串會發生什么。


所以你的循環中斷了,數組中的一些值仍然是String的默認值,在這種情況下是null.


這使得sort嘗試與null其他字符串進行比較(您可以在線閱讀如何.sort工作)。


要解決此問題,您應該在循環之前添加以下內容:


for (int i = 0; i < sorteerArray.length; i++) {

    sorteerArray[i]="";

}

如果您使用調試器檢查代碼,您將能夠看到數組中的所有值,在 , 之后""都是null. 所以在sort運行時,它會比較數組的值,并在某個時候到達null,導致NullPointerException.


我上面寫的代碼將用空字符串初始化數組,以便可以比較它們。


查看完整回答
反對 回復 2021-11-17
  • 3 回答
  • 0 關注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號