2016-03-01 91 views
1

我有一個Java類文件,其中包含一個我想在另一個Java類文件中使用的double值數組。這是我的代碼的簡化版本:從一個Java類傳遞一個double值的數組到另一個

File1.java

public class File1.java{ 

//code 

public void compute 
{ 
    double[] vectorX_U = {0.1, 0.2, 0.5} 
} 

//i tried this method to pass but it said vectorX_U cannot be resolved to a variable 
public Double[] getvectorX_U() 
{ 
    return vectorX_U; 
} 

File2.java

//i attempt to use the array 
public void computethis 
{ 
    File1 td = new File1(); 
    System.out.println(td.getvectorX_U()); 
} 

我可以對如何實現這一目標有所幫助?謝謝!

+0

你需要在類級別定義'vectorX_U',而不是'compute'方法中的本地 – SomeJavaGuy

+0

應該是一個屬性,而不是在你的方法 – Apostolos

回答

4

您的File1充滿了錯誤。

基本上(除了編譯錯誤),你需要將你的雙精度數組作爲一個實例變量。

現在,它是compute方法中的局部變量,並且get方法無法訪問它。

File1.java

public class File1{ // no .java here! 

double[] vectorX_U; 

public void compute 
{ 
    vectorX_U = {0.1, 0.2, 0.5} 
} 


public Double[] getvectorX_U() 
{ 
    return vectorX_U; // now it will find the instance variable 
} 
} 

編輯:

你需要調用getvectorX_U前致電計算方法,雖然。 如果不這樣做,數組將不會被初始化,並且getter將返回null。

+0

謝謝,但是當我試圖在File2中使用「td.compute()。getvectorX_U();」語法錯誤「無法調用原始類型void」上的getvectorX_U()會發生。知道爲什麼? – Cael

+0

首先在構造函數中使用compute方法,然後調用td.getVectorX_U(); – Apostolos

+0

@Cafe not td.compute()。getvectorX_U();,;但td.compute(); td.getvectorX_U();你不能鏈接它們,因爲compute不會返回任何東西,而且你試圖在compute的(不存在的)結果上運行getter。 – Stultuske

-1

基本上你的vectorX_U變量的作用域在compute方法內部。所以非其他方法可以訪問vectorX_U變量。所以它應該是一個全局變量。

+0

在Java中沒有全局變量,您可能希望將其更改爲「實例變量」。 – Stultuske

+0

@Stultuske以及我的想法是將變量顯示給所有的方法。實例變量沒有意義,因爲我們可以在方法內部創建實例變量,就像這裏最初做的那樣。但全局意味着它是實例變量,但在方法之外定義。 – hackmith

+0

「,因爲我們可以在方法內創建實例變量」......不,我們不能。如果我們在一個方法中創建它,它不是一個實例變量,它是一個局部變量。你所描述的是一個實例變量。 – Stultuske

0

如果我想知道我改變陣列值,所有的類都可以使用它作爲「全局變量」,你可以設置

public class File1.java{ 

    public static final double[] VECTORX_U = {0.1, 0.2, 0.5}; 

    ............ 

} 

,如果你想改變它,在每一個實例這個變量是相同

public class File1.java{ 

    static double[] vectorX_U = {0.1, 0.2, 0.5}; 

    ............ 

} 

如果在這個類的每個實例變量具有特殊的價值

public class File1.java{ 

    double[] vectorX_U = {0.1, 0.2, 0.5}; 

    ............ 

} 

爲第一和第二你可以使用File1.variable,第三你需要創建這個類的實例,那麼你可以使用它