[英]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.