2016-03-01 42 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,第三你需要创建这个类的实例,那么你可以使用它

相关问题