Javaに関する質問があります。このコードでは、負の数と正の数を2つの配列に分割し、その後にそれらを出力しました。しかし、私は、私はエラーがあることを開始し、すべての時間:ここで2つの配列に番号を区切るJava
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6
at mypackages.MyClass.main(MyClass.java:26)
は、私が書いたコードは次のとおりです。
package mypackages;
public class MyClass {
public static void main(String[] args) {
int[] array = {12, 23, -22, 0, 43, 545, -4, -55, 43, 12, 0, -999, -87};
int counterNeg = 0;
int counterPoz = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] < 0){
counterNeg++;
} else if (array[i] > 0){
counterPoz++;
}
}
int[] arrayNeg = new int[counterNeg];
int[] arrayPoz = new int[counterPoz];
for (int j = 0; j < array.length; j++) {
if (array[j] < 0){
arrayNeg[j] = array[j];
} else if (array[j] > 0){
arrayPoz[j] = array[j];
} else {
continue;
}
}
良い機会にデバッガを使用する方法とコードを段階的にデバッグして何が起きているのかを理解する。 – assylias
一般に、 'arrayPoz'または' arrayNeg'は 'array'と同じ長さではないので、2番目のループはこのエラーの原因になることは明らかです。 –
'counterNeg'と' counterPoz'は常に 'array.length'より小さいです。したがって、 'java.lang.ArrayIndexOutOfBoundsException'を取得しました。 –