2016-09-27 19 views
-6

これはJavaの私の最初の大きなプロジェクトです。私は何時間もこのエラーで立ち往生しています。私は文字列のために私が間違っていると思います。私のコードが意味をなさない場合はお詫び申し上げます。私は自分の間違いを勉強しようとしています。あなたは私の間違いを理解するのを助けてくれますか?スレッド "main"の例外java.lang.NegativeArraySizeException

InfoGain = new double[noOfAttributes]; 
    GainRatio = new double [noOfAttributes]; 
    findUnique(); 
+3

。例外の後にもその名前が付けられます。 – Kayaman

答えて

0

長さがnoOfAttributes - 1の2つの配列を2つ作成します。ただし、作成する瞬間にnoOfAttributesはまだ0であるため、サイズは-1です。これは不正です。

見て、条件式にnoOfAttributesを設定します。 if-statementを入力しないと、0になります。

+0

あなたはそれを整えるほど親切ですか? – Raj

+0

私はあなたに例外の理由を教えました。ビジネスロジックの問題が原因で発生します。自分で修正する必要があります。 – xenteros

0

サイズ0の配列が可能ではなく、負のサイズの

int []x=new int[0];  //this is possible. 
int []x=new int[-4]; // this is not possible 

それが負であってもよい、noofAttributes値をチェックします。

0

まず、Javaの配列が最初のインデックスとして0で始まることを理解する必要があります。

あなたは属性の

InfoGain = new double[noOfAttributes-1];

ませを書きません最初は0、そうInfoGainが存在しないであろう配列、インデックス-1にしようとします、したがって、それはあなたにこの例外を与えることができます。

これを試してください:InfoGain = new double[noOfAttributes];両方の配列と本質的に動作するはずです。

0

あなたは、以下のような単純な場合は、他の条件で上記のエラーを解決することができます:あなたは負のサイズを持つ配列を作成しようとしている

if(noOfAttributes > 0){ 
    InfoGain = new double[noOfAttributes]; 
    GainRatio = new double [noOfAttributes]; 
} 
else{ 
    InfoGain = new double[INITIAL_VALUE]; 
    GainRatio = new double [INITIAL_VALUE]; 
} 
findUnique(); 
関連する問題