這是我在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