簡體   English   中英

svd錯誤java java空指針異常

[英]svd error java java null pointer exception

我正在編寫一些代碼,該代碼使用線程使用Jama和svd()方法從矩陣A訪問線程U,S和V,但是我遇到了諸如Java Null指針異常之類的難題。 我的代碼是這樣的:

public class SVD implements Runnable
    {
    private Thread t;
    public Matrix A;
    public int option;
    public Matrix result;

    public SVD(Matrix A, int optiune)
    {
        this.A = A;
        this.option = optiune;
    }

    @Override
    public void run()
    {
        if (option == 1)
            result = A.svd().getU();
        if(option ==2)
            result=A.svd().getS();
        if(option ==3)
            result=A.svd().getV();
    }

    public void start()
    {
        if (t == null)
        {
            t = new Thread(this);
            t.start();
        }

    }

}

現在,當我嘗試創建3個SVD對象時,如下所示:

 Matrix A = Matrix.random(20, 20);
    SVD a1 = new SVD(A, 1);
    SVD a2 = new SVD(A, 2);
    SVD a3 = new SVD(A, 3);
    a1.start();
    a2.start();
    a3.start();
    Matrix U=a1.result;

最后一行是發生錯誤的行。 是什么原因引起的? 這是我想念的東西嗎?

PS:對不起格式,我不知道為什么會這樣!

結果來自Matrix類型,盡管您的a1指向某個東西,但a1.result可能為null,請在執行最后一行之前嘗試調用run方法,例如:

Matrix A = Matrix.random(20, 20);
SVD a1 = new SVD(A, 1);
SVD a2 = new SVD(A, 2);
SVD a3 = new SVD(A, 3);
a1.start();
a2.start();
a3.start();
a1.run();
Matrix U=a1.result;

檢查行a1.run(),以便從a1初始化結果字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM