Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将双值数组从一个java类传递到另一个java类_Java - Fatal编程技术网

将双值数组从一个java类传递到另一个java类

将双值数组从一个java类传递到另一个java类,java,Java,我有一个Java类文件,其中包含我想在另一个Java类文件中使用的双值数组。这是我的代码的简化版本: 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 pu

我有一个Java类文件,其中包含我想在另一个Java类文件中使用的双值数组。这是我的代码的简化版本:

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;
 }
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
 }
}
File2.java

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

我能在如何实现这一点上得到一些帮助吗?谢谢

您的文件1充满了错误

基本上(除了编译错误),您需要将double数组作为实例变量

现在,它是compute方法中的一个局部变量,您的get方法无法访问它

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;
 }
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_之前,您需要调用compute方法。
如果不这样做,数组将不会初始化,getter将返回null。

基本上,vectorxu变量的作用域在compute方法内。因此,没有其他方法可以访问vectorX_变量。因此,它应该是一个全局变量。

如果您不想更改数组值,并且所有类都可以将其用作“全局变量”,则可以进行设置

public class File1.java{

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

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

}
如果要更改它,则实例中的每个this变量都是相同的

public class File1.java{

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

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

}
该类的每个实例中的if变量都有一个特殊值

public class File1.java{

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

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

}

对于第一个和第二个,您可以使用File1.variable;第三个,您需要创建此类的实例,然后您可以使用它

您需要在类级别定义
vectorxu
,而不是在
compute
方法中定义localy,该方法应该是一个属性,而不是在您的方法中Java中没有全局变量,您可能想将其改为“实例变量”。@Stultuske我的想法是向所有方法显示变量。实例变量没有这种意义,因为我们可以在方法内部创建实例变量,就像最初在这里所做的那样。但global意味着它是实例变量,但它是在方法外部定义的。“因为我们可以在方法内部创建实例变量”。。。不,我们不能。如果我们在一个方法中创建它,它不是一个实例变量,而是一个局部变量。您所描述的是一个实例变量。谢谢,但当我试图在文件2中使用“td.compute().getvectorX_();”输出它时,出现了一个语法错误“无法在原语类型void上调用getvectorX_()”。知道为什么吗?首先在构造函数中使用compute方法,然后调用td.getVectorX_()@Cael not td.compute().getvectorX_();,但是td.compute();td.getvectorX_();您不能将这些链接起来,因为compute不会返回任何内容,并且您正在尝试对compute的(不存在的)结果运行getter。