3

多数の数値の配列 (整数として) をスキャンし、それらをシナリオ オブジェクトに格納するコードがあります。ただし、3499 番目のオブジェクト (3498 番目の J を出力) に到達すると、null ポインターでクラッシュします。最大配列サイズを探しましたが、インターネット上で 2^32-5 以外は見つかりませんでしたが、その制限に近づいていません。

        in1scan = new Scanner(in1);
        in2scan = new Scanner(in2);
        scenario[] ret= new scenario[9999];
        int j=0;

        while (in1scan.hasNext()){
            String[] input=(in1scan.next().split(",", 16));
                    ret[j]=new scenario();
            for (int i=0; i<16;i++){

                ret[j].input[i]=Integer.parseInt((input[i]));   
            }
            j++;
        }

        j=0;
        while (in2scan.hasNext()){
            ret[j].correct=Integer.parseInt(in2scan.next()); //here things go wrong
            j++;
            System.out.println(j);
        }

誰が何が悪いのか知っていますか?そして、はい、現在のラウンドアバウトの数値の受け入れ方法の代わりに nextInt を使用できることはわかっていますが、この方法で処理する必要がある機能をいくつか追加します。

4

3 に答える 3

1

i<16する必要がありますi < input.length。`split(.., 16) は最大値のみを指定します。

于 2013-09-18T14:58:14.157 に答える