我在 javaprogrammingforums.com 上问了同样的问题,但他们的网站似乎现在已经关闭。所以我看不到我得到了什么回应(如果有的话)。无论如何,我在这个 Java 硬件作业上陷入了困境。到目前为止,我所拥有的看起来完成得很好,现在只是让正确的值出现。假装我有这个:
(这只是带有构造函数的两个类中的第二个类的一部分,另一个是“测试器”)
//private variables
boolean myP;
boolean myPla;
boolean myGl;
boolean myCa;
double myPlot;
int myCrust;
double myReduct;
double myNet;
double myGross;
boolean [] trshIt = {myP, myPla, myGl, myCa};
double [] CO2TrashEmissions = {184.0, 25.6, 46.6, 165.8};
//constructor
CO2FromWaste(int crust, boolean p, boolean pl, boolean gl, boolean ca)
{
myPlot = 1018.0;
myCrust = crust;
myP = p;
myPl = pl;
myGl = gl;
myCa = ca;
}
我的问题是 boolean 数组trshIt。由于我将尚未初始化的变量放入数组中,因此它为这些变量提供默认值 false。如果我先把它放在构造函数中,那么我会收到一个错误,提示找不到变量 trshIt ;指向我调用该变量的实例。所以我在不同的领域尝试了不同形式的它,我现在就像被困在迷宫里一样试图让该阵列正常工作。我需要我能得到的所有帮助。有想法吗?
最佳答案
它不起作用,因为 trshIt 将从字段中获取其值,然后再在构造函数中初始化它们。
在所有其他变量都应该起作用之后,在构造函数中初始化 trshIt。
此外,由于 CO2TrashEmissions 看起来是恒定的(也许 myPlot 也是如此?),您可能应该将其声明为静态和最终的,以防止它发生变化。尽管它不会阻止对元素本身的修改。
private static final double[] CO2TrashEmissions = {184.0, 25.6, 46.6, 165.8};
//Fields....
boolean[] trshIt;
//constructor
CO2FromWaste(int crust, boolean p, boolean pl, boolean gl, boolean ca)
{
myPlot = 1018.0;
myCrust = crust;
myP = p;
myPl = pl;
myGl = gl;
myCa = ca;
trshIt = new boolean[]{myP, myPla, myGl, myCa};
}
另请注意,由于 boolean 值是文字,因此更改 my* 变量之一不会更改数组中的相应元素,这可能会出现问题,具体取决于您的程序正在执行的操作。
关于java - 使用构造函数参数的值初始化数组 - 无法初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9352317/