这是我在Java中的第一个大项目。我一直被这个错误困住了好几个小时。我想我因为字符串而犯了一个错误。如果我的代码没有意义,我很抱歉。我正在努力学习我的错误。你能帮我弄清楚我的错误吗?线程“main”中的异常java.lang.NegativeArraySizeException
InfoGain = new double[noOfAttributes];
GainRatio = new double [noOfAttributes];
findUnique();
这是我在Java中的第一个大项目。我一直被这个错误困住了好几个小时。我想我因为字符串而犯了一个错误。如果我的代码没有意义,我很抱歉。我正在努力学习我的错误。你能帮我弄清楚我的错误吗?线程“main”中的异常java.lang.NegativeArraySizeException
InfoGain = new double[noOfAttributes];
GainRatio = new double [noOfAttributes];
findUnique();
大小为0的数组是可能的,但不否定大小的
int []x=new int[0]; //this is possible.
int []x=new int[-4]; // this is not possible
所以检查noofAttributes值时,它可以为负。
您需要明白,首先Java中的数组以第一个索引0
开头。
当你写
InfoGain = new double[noOfAttributes-1];
无属性的可最初为0,所以InfoGain
会尽量指数-1
数组,这将不存在,因此它给你这个例外英寸
尝试使用这个:InfoGain = new double[noOfAttributes];
为阵列和基本上它应该工作。
你可以用简单的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();
你试图创建一个具有大小为负的数组。这个例外甚至以它的名字命名。 – Kayaman