这是我在Java中的第一个大项目。我已经被这个错误困住了这么多个小时。我假设因为字符串我犯了一个错误。如果我的代码毫无意义,我道歉。我正在努力学习我的错误。你能帮我解决一下我的错误吗?
InfoGain = new double[noOfAttributes];
GainRatio = new double [noOfAttributes];
findUnique();
答案 0 :(得分:0)
您创建了两个长度为noOfAttributes - 1
的双精度数组。但是,在您创建它们时,noOfAttributes
仍为0,因此您收到的大小为-1
是非法的。
看,你在条件表达式中设置了noOfAttributes
。如果您没有输入if-statement
,那么它将为0。
答案 1 :(得分:0)
大小为0的数组是可能的,但不是负大小
int []x=new int[0]; //this is possible.
int []x=new int[-4]; // this is not possible
所以检查 noofAttributes 值,它可能是负数。
答案 2 :(得分:0)
首先需要了解Java中的数组以0
作为第一个索引。
写作时
InfoGain = new double[noOfAttributes-1];
没有属性最初可以为0,因此InfoGain
将尝试在数组中对-1
进行索引,这不会存在,因此它会为您提供此异常。
尝试对这两个数组使用InfoGain = new double[noOfAttributes];
,基本上它应该可以工作。
答案 3 :(得分:0)
您可以使用简单的if-else条件解决上述错误,如下所示:
if(noOfAttributes > 0){
InfoGain = new double[noOfAttributes];
GainRatio = new double [noOfAttributes];
}
else{
InfoGain = new double[INITIAL_VALUE];
GainRatio = new double [INITIAL_VALUE];
}
findUnique();