1

ヌル ポインター例外が発生する理由がわかりません。ユーザーがプロンプトの後に入力する行番号を変換しようとしていますが、スペース " " カンマ "、またはカンマとスペース ", " のいずれかに区切りたいと考えています。

これが私のコードです。nums[i]=Integer.parseInt(holder[i]); で null ポインター例外が発生しています。ライン。理由がわかりません。

String again="n";
    int[] nums = null;

    do {
        Scanner scan = new Scanner (System.in);

        System.out.println("Enter a sequence of integers separated by a combination of commas or spaces: ");
        String in=scan.nextLine();
        String[] holder=in.split(",| |, ");

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

                nums[i]=Integer.parseInt(holder[i]);
                System.out.print(nums[i]);
            }


    }
    while (again=="y");

わかりました皆さんありがとうございます。受け入れられた回答で提案されているように、nums配列の長さをホルダー配列の長さに初期化することで機能しました。このような:

int[] nums = new int[holder.length];

私の正規表現が失敗しているように見えるので、2番目の質問があります.

これが私のエラーです:

Enter a sequence of integers separated by a combination of commas or spaces: 
    1, 2, 3
    Exception in thread "main" 1java.lang.NumberFormatException: For input string: ""
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at SortComparison.main(SortComparison.java:20)
4

3 に答える 3

2

null ポインター例外は、nums 配列を null に初期化し、for ループでそれを「ポイント」しようとしたことが原因で発生します。あなたは失うことができint[] nums = null、追加することができます:

int[] nums = new int[holder.length];

for ループの直前 (もちろん、ホルダー配列を作成した後)。

于 2013-04-07T10:23:35.883 に答える
1

設定しました

int[] nums = null;

そしてアクセスしてみる

num[i]

これにより、NullPointerException が発生します。最初に、必要な数の要素を保持するように配列を構築する必要があります。

int[] nums = new int[holder.length] 
于 2013-04-07T10:23:37.197 に答える
0

holder[i]何が含まれているかを確認するために、整数に解析する前にあなたを印刷することをお勧めします。holder[i]整数の有効な値を持っていないと推測しています。

于 2013-04-07T10:21:23.267 に答える