java—如何调用eclipse中在其他文件上创建的数组?

but5z9lq  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(271)

这个问题在这里已经有答案了

什么是nullpointerexception,如何修复它(12个答案)
六天前关门了。
我想在第一行用索引填充一个表,在第二行用统一法则生成的元素填充一个表。为了遵循我的工作步骤,我创建了一个不可执行文件:

import java.util.Random;

public class CSignal {
    private int N, V;
    private double[][] tabSig;
    public double k;

    public CSignal() {
        V = 4;
        N = 10;

        Remplit();
    }

    public void Remplit() {
        for (int i = 0; i < N; i++) {
            tabSig[0][i] = i;
            Random e = new Random();
            k = e.nextDouble();
            tabSig = new double[2][2];
            this.tabSig[1][i] = k * V;
        }
    }

    public int get_N() {
        return N;
    }

    public int get_V() {
        return V;
    }

    public double[][] get_tab() {
        return tabSig;
    }

    public void Affiche() {
        System.out.println(tabSig);
    }

}

然后是可执行文件:

public class TP {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        CSignal signal;
        signal = new CSignal();
        signal.Affiche();
    }
}

当我尝试此程序时,出现以下错误:

Exception in thread "main" java.lang.NullPointerException: Cannot load from object array because "this.tabSig" is null
368yc8dk

368yc8dk1#

一般来说,npe意味着您正在对指向null(nothing)的引用执行操作。
在您的示例中,有一个名为 tabSig . 在构造函数中,您试图填充它(调用方法 Remplit ),但尚未初始化。因此,npe将被抛出行:

tabSig[0][i]= i;
tabSig[1][i]= k*V;

所以为了避免它,您需要在调用这个方法之前初始化它。您必须在构造函数中执行此操作,因为您正在设置 N 值(第二维度的长度):

public CSignal(){
    V=4;
    N=10;
    tabSig = new double[2,N];
    Remplit();
}

如果要打印阵列:

for (int i = 0; i < tabSig.length; i++)
     for (int j = 0; j < tabSig[i].length; j++) 
           System.out.print(tabSig[i][j] + " ");

相关问题