该代码为锯齿状数组提供NullPointerException

时间:2017-07-02 10:10:26

标签: java nullpointerexception jagged-arrays

代码在注释行上给出了NullPointerException。我无法找到问题。

package com.lambda.classes;

import java.util.Random;

public class Lambda {

    public static void main(String []args)
    {
        int array[][]=new int[5][];
        Random r=new Random();
        Random r2=new Random();
        for(int i=0;i<5;i++){
            int x=r.nextInt(10);
            for(int j=0;j<x;j++)
            {
                int y=r2.nextInt(200);//this line gives a null pointer exception
                array[i][j]=y;
            }
        }

        for (int[] is : array) {

            for (int i : is) {
                System.out.print(i+"\t");
            }
            System.out.println();
        }
        Random x=new Random();
        System.out.println(x.nextInt(10));
        System.out.println(x.nextInt(10));
    }
}

3 个答案:

答案 0 :(得分:0)

在此行中的代码错误&#39; array [i] [j] = y;&#39;。 因为它&#39; int array [] [] = new int [5] [];&#39;

你也需要为内部数组设置大小。

像这样的东西

public static void main(String[] args) {
    int array[][] = new int[5][];
    Random r = new Random();
    Random r2 = new Random();
    for (int i = 0; i < 5; i++) {
        int x = r.nextInt(10);
        array[i] = new int[x];
        for (int j = 0; j < x; j++) {
            int y = r2.nextInt(200);
            array[i][j] = y;
        }
    }
    for (int[] is : array) {
        for (int i : is) {
            System.out.print(i + "\t");
        }
        System.out.println();
    }
    Random x = new Random();
    System.out.println(x.nextInt(10));
    System.out.println(x.nextInt(10));
}

答案 1 :(得分:0)

实际上我正在尝试为这个问题实现一个锯齿状的数组,所以有什么东西像a [5] [100]那样初始化数组,如果我在某些东西如int的java声明中没有错array [] [] = new int [5] [];完全没问题,感谢答案(y):)

答案 2 :(得分:0)

现在我已经让它在没有使用额外空间的情况下工作了,好像我可以不喜欢int [5] [100];我可能最终会使用额外的空间,但感谢初始化点,它可以使用列表数组轻松完成.....谢谢你们:)

int array[][]=new int[5][];
        Random r=new Random();
        for(int i=0;i<5;i++){
            int x=r.nextInt(10);
            array[i]=new int[x];
            for(int j=0;j<x;j++)
            {
                array[i][j]=r.nextInt(200);
            }
        }

    for (int[] is : array) {
        for (int i : is) {
            System.out.print(i+" ");
        }
        System.out.println();
    }