调用2D数组函数''无法将Double [] []转换为Double"错误

时间:2015-09-16 17:15:16

标签: java arrays multidimensional-array arraylist double

希望每个人都很好。

调用我创建的方法时出现此错误。我之所以创建该方法的原因是返回2个double值,所以我使用了2d数组。这是我的相关代码:

Double[][] type2FS;
type2FS = new Double[rule.getRules().get(x).getAttributes().size()][rule.getRules().get(x).getAttributes().size()];
int pos=0;

2d数组是决策树规则中属性数量的大小,规则存储在ArrayList中。

type2FS[pos][pos]=calRight(grade.getDM(),grade.getDNU(),grade.getDNL(),Double.parseDouble(store.getData()[i][z]));
pos++;
break;

我在' ='之后的部分中收到错误签名,带消息"类型不匹配:无法从Double [] []转换为Double"。 传递了4个双变量。

private Double[][] calRight(double dm, double dnu, double dnl, double value) 
    {
    double upperMg= (value-dnl) / (dnu-dnl);
    double lowerMg= 1 - upperMg;

    if(upperMg>1.0)
    {
        upperMg=1.0;    
    }
    else if (upperMg<0.0)
    {
        upperMg=0.0;
    }

    if(lowerMg>1.0)
    {
        lowerMg=1.0;
    }
    else if(lowerMg<0.0)
    {
        lowerMg=0.0;
    }
    Double[][] temp = {{upperMg},{lowerMg}};
    return temp;
}

这是计算我希望存储在type2FS 2D数组中的2个double值的方法。

从函数返回的2个double值是集合的一部分。所以一组看起来像(4.5,5.5),现在一个决策树规则可以有多个集合,具体取决于规则。所以我认为存储它的最好方法是在2D数组中。

我无法理解我哪里出错了。 任何帮助将不胜感激。

谢谢

3 个答案:

答案 0 :(得分:1)

type2FS[pos][pos]=calRight(grade.getDM(),grade.getDNU(),grade.getDNL(),Double.parseDouble(store.getData()[i][z]));

这意味着我的值是pos而j值是pos,那么你将分配特定的行和列值,然后是它的布尔值。

而不是那个

type2FS =calRight(grade.getDM(),grade.getDNU(),grade.getDNL(),Double.parseDouble(store.getData()[i][z]))
你可以这样打电话。

type2FS [pos]期待一个维度数组。因为你只提到了一行。

type2FS [pos] [[pos]期待Double值。因为你提到了行ans列。

答案 1 :(得分:1)

type2FS[pos][pos] = ...

正在尝试为单个&#34;单元格&#34;你的数组,所以它应该是一个double值。但是你要传递一个数组。

所以,改变

type2FS[pos][pos]=calRight(grade.getDM(),grade.getDNU(),grade.getDNL(),Double.parseDouble(store.getData()[i][z]));

type2FS=calRight(grade.getDM(),grade.getDNU(),grade.getDNL(),Double.parseDouble(store.getData()[i][z]));

无论如何,&#34; [...]返回2个双倍值,所以我使用了2d数组&#34;没有意义,你也可以使用1d数组:

private Double[] calRight(double dm, double dnu, double dnl, double value) {
    //other code
    Double[] temp = {upperMg,lowerMg};
    return temp;
}

即使这不是最好的解决方案。

答案 2 :(得分:1)

  

错误 - '无法转换双[] []加倍“

是的,为什么! type2FS[pos][pos]是双重类型参考&amp; calRight(...)返回double [] []。这是类型不匹配。

type2FS[pos][pos]=calRight(grade.getDM(),grade.getDNU(),grade.getDNL(),Double.parseDouble(store.getData()[i][z]));