Java 代码为锯齿数组提供NullPointerException

Java 代码为锯齿数组提供NullPointerException,java,nullpointerexception,jagged-arrays,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

代码在注释行上给出一个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));
    }
}
package com.lambda.classes;
导入java.util.Random;
公共级Lambda{
公共静态void main(字符串[]args)
{
int数组[][]=新的int[5][];
随机r=新随机();
随机r2=新随机();

对于(inti=0;i,在这行“array[i][j]=y;”中的代码错误。 因为它“int数组[][]=新的int[5][];”

您还需要设置内部数组的大小

像这样的

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));
}
publicstaticvoidmain(字符串[]args){
int数组[][]=新的int[5][];
随机r=新随机();
随机r2=新随机();
对于(int i=0;i<5;i++){
int x=r.nextInt(10);
数组[i]=新整数[x];
对于(int j=0;j
事实上,我正试图实现一个锯齿状数组,那么用类似于a[5][100]的东西初始化数组有什么意义呢?如果我在java声明中没有错的话,比如int-array[][]=new int[5][];完全可以,谢谢你的回答(y):)

现在,我可以在不使用额外空间的情况下工作,就像我可以使用don like int[5][100];我可能会使用额外的空间,但感谢这个初始化点,并且可以使用列表数组轻松完成……谢谢大家:)

int数组[][]=新的int[5][];
随机r=新随机();

对于(int i=0;iIt不太可能发生NPE。请共享实际代码和完整的异常堆栈跟踪。另请阅读:“您也需要设置内部数组的大小。”不是在2d数组初始化期间。在循环中更改了代码second massive init。也不需要第二个
Random
对象。我以前没有看到您的答案
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();
    }