调用二维数组函数“无法将 Double[][] 转换为 Double”错误
Calling 2D Array Function ''Cannot Convert Double[][] To Double" Error
希望大家都好
调用我创建的方法时出现此错误。我之所以创建该方法是为了 return 2 个双精度值,所以我使用了一个二维数组。这是我的相关代码:
Double[][] type2FS;
type2FS = new Double[rule.getRules().get(x).getAttributes().size()][rule.getRules().get(x).getAttributes().size()];
int pos=0;
二维数组是决策树规则中属性数量的大小,规则存储在ArrayList中。
type2FS[pos][pos]=calRight(grade.getDM(),grade.getDNU(),grade.getDNL(),Double.parseDouble(store.getData()[i][z]));
pos++;
break;
我在“=”符号后的部分收到错误消息 "Type mismatch: cannot convert from Double[][] to Double"。
传递了4个double变量。
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 二维数组中的 2 个双精度值的方法。
从函数 return 编辑的 2 个双精度值是一个集合的一部分。所以一组看起来像 (4.5,5.5),现在一个决策树规则可以有很多组,具体取决于规则。所以我认为最好的存储方式是在二维数组中。
我不明白我哪里出错了。
任何帮助将不胜感激。
谢谢
type2FS[pos][pos]=calRight(grade.getDM(),grade.getDNU(),grade.getDNL(),Double.parseDouble(store.getData()[i][z]));
这意味着 i 值为 pos 且 j 值为 pos ,然后您将分配特定的行和列值,然后分配其布尔值。
而不是
type2FS =calRight(grade.getDM(),grade.getDNU(),grade.getDNL(),Double.parseDouble(store.getData()[i][z]))
你可以这样打电话。
type2FS[pos] 需要一维数组。因为你只提到行。
type2FS[pos][[pos] 需要 Double 值。因为你提到的是行和列。
type2FS[pos][pos] = ...
正在尝试为数组的单个 "cell" 分配一个值,因此它应该是一个双精度值。但是你传递的是一个数组。
所以,改变
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]));
无论如何,“[...] 到 return 2 个双精度值,所以我使用了二维数组”没有意义,您可以使用一维数组:
private Double[] calRight(double dm, double dnu, double dnl, double value) {
//other code
Double[] temp = {upperMg,lowerMg};
return temp;
}
尽管那不是最好的解决方案。
Error - 'Cannot Convert Double[][] To Double"
对呀,为什么! type2FS[pos][pos]
是 double 类型引用 & calRight(...)
returns double[][]。是类型不匹配。
type2FS[pos][pos]=calRight(grade.getDM(),grade.getDNU(),grade.getDNL(),Double.parseDouble(store.getData()[i][z]));
希望大家都好
调用我创建的方法时出现此错误。我之所以创建该方法是为了 return 2 个双精度值,所以我使用了一个二维数组。这是我的相关代码:
Double[][] type2FS;
type2FS = new Double[rule.getRules().get(x).getAttributes().size()][rule.getRules().get(x).getAttributes().size()];
int pos=0;
二维数组是决策树规则中属性数量的大小,规则存储在ArrayList中。
type2FS[pos][pos]=calRight(grade.getDM(),grade.getDNU(),grade.getDNL(),Double.parseDouble(store.getData()[i][z]));
pos++;
break;
我在“=”符号后的部分收到错误消息 "Type mismatch: cannot convert from Double[][] to Double"。 传递了4个double变量。
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 二维数组中的 2 个双精度值的方法。
从函数 return 编辑的 2 个双精度值是一个集合的一部分。所以一组看起来像 (4.5,5.5),现在一个决策树规则可以有很多组,具体取决于规则。所以我认为最好的存储方式是在二维数组中。
我不明白我哪里出错了。 任何帮助将不胜感激。
谢谢
type2FS[pos][pos]=calRight(grade.getDM(),grade.getDNU(),grade.getDNL(),Double.parseDouble(store.getData()[i][z]));
这意味着 i 值为 pos 且 j 值为 pos ,然后您将分配特定的行和列值,然后分配其布尔值。
而不是
type2FS =calRight(grade.getDM(),grade.getDNU(),grade.getDNL(),Double.parseDouble(store.getData()[i][z]))
你可以这样打电话。
type2FS[pos] 需要一维数组。因为你只提到行。
type2FS[pos][[pos] 需要 Double 值。因为你提到的是行和列。
type2FS[pos][pos] = ...
正在尝试为数组的单个 "cell" 分配一个值,因此它应该是一个双精度值。但是你传递的是一个数组。
所以,改变
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]));
无论如何,“[...] 到 return 2 个双精度值,所以我使用了二维数组”没有意义,您可以使用一维数组:
private Double[] calRight(double dm, double dnu, double dnl, double value) {
//other code
Double[] temp = {upperMg,lowerMg};
return temp;
}
尽管那不是最好的解决方案。
Error - 'Cannot Convert Double[][] To Double"
对呀,为什么! type2FS[pos][pos]
是 double 类型引用 & calRight(...)
returns double[][]。是类型不匹配。
type2FS[pos][pos]=calRight(grade.getDM(),grade.getDNU(),grade.getDNL(),Double.parseDouble(store.getData()[i][z]));