java - 使用构造函数参数的值初始化数组 - 无法初始化?

标签 java arrays constructor private

我在 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/

相关文章:

c - 从函数返回错误的数组值

javascript - 在 extJS 中将数组转换为 JSON

java - 增强的 for 循环无法为数组赋值 (Java)

Java浅拷贝子类实例的父类(super class)实例

java - Android - 获取值

java - Hibernate TransientPropertyValueException 在保存数据时

java - 使用 Java 操作 PDF

java - 同一事务中的出站 channel 适配器

c++ - 使用构造函数分配内存

javascript - 构造一个结构复杂的Javascript对象?