我最近开始使用Java编程,现在遇到以下问题:
我写了一个课程" ComparePattern",得出最佳拟合分数,然后应该给出分数和最佳拟合模式。到目前为止没有问题。虽然回馈模式似乎不起作用。它是一个双值数组,比如说" bestpattern"。我已经实现了一个返回方法来回馈所说的双数组。
public void double[] getBestPattern(){return bestpattern;}
现在,在运行比较之后,如果我从我的主类(比如MainClass)调用return-method,它返回一个null的数组。
double[] test = ComparePattern.getBestPattern();
做类似
的事情double[] test=ComparePattern.bestpattern;
也给出了null。但是,如果我在我的ComparePattern类的counstructor中打印bestpattern,它在生成它的位置,它显然不是null但保持期望值。现在来了有趣的部分。如果我在ComparePattern的构造函数中给出以下指令(当然,在生成bestpattern之后),它会工作并返回正确的值:
MainClass.test=bestpattern;
显然,这不是我想要这样做的方式。我已经以静态和非静态方式尝试了这一点,并且我确信所有变量都已正确初始化。任何人都知道为什么java将bestpattern从一个正常运行的双数组改为null?
答案 0 :(得分:1)
你的问题可能在ComparePattern的构造函数中。它可能看起来像这样:
public class ComparePattern
{
private double[] bestpattern;
...
public ComparePattern ()
{
...
double[] bestpattern = new double[..];
...
}
...
}
这意味着您的构造初始化名为bestpattern
的本地数组,而不是具有相同名称的成员数组。您只需将其更改为:
public class ComparePattern
{
private double[] bestpattern;
...
public ComparePattern ()
{
...
bestpattern = new double[..];
...
}
...
}
这可以解释为什么您的getBestPattern()
方法返回null。