乱数を生成して配列に格納するJavaプログラムで作業しています。次に、プログラムは配列を通り、偶数と奇数を2つの新しい配列に入れ、それらをユーザーに提示することになっています。このプログラムはまた、アレイ内に存在する奇数および偶数の数をユーザーに伝えます。Java - ArrayIndexOutOfBoundsException
このコードをコンパイルしようとすると "ArrayIndexOutOfBoundsException"が表示されます。 誰かが私にその理由を教えてもらえますか?
import java.util.Scanner;
import java.util.Random;
import java.util.Arrays;
class Randomnumbers
{
public static void main (String[] args)
{
Random random;
int i;
int numberOfNumbers=0;
int upperRange=999;
int lowerRange=0;
int randomNumber=0;
int even=0;
int odd=0;
int currentOdd=0;
int currentEven=0;
int[] oddNumbers=new int[0];
int[] evenNumbers=new int[0];
Scanner in = new Scanner(System.in);
System.out.println("Please enter how many random numbers you want(0-999)");
numberOfNumbers=in.nextInt();
int[] numbers=new int[numberOfNumbers];
random = new Random();
for (i = 0; i < numbers .length; i++){
randomNumber = random.nextInt(upperRange-lowerRange) + lowerRange;
numbers[i] = randomNumber;
}
System.out.println("\n" +"These are the random numbers:");
System.out.println(Arrays.toString(numbers));
for(i=0; i < numbers .length; i++){
if((numbers[i] % 2) == 0)
{
even = even + 1;
}
else
{
odd = odd + 1;
}
}
evenNumbers=new int[even];
oddNumbers=new int[odd];
for(i=0; i < numbers .length; i++){
if((numbers[i] % 2) == 0)
{
evenNumbers[i]=numbers[i];
}
else
{
// this is the code line the compiler does not like:
oddNumbers[i]=numbers[i];
}
}
System.out.println("The following " +even +" numbers are even:");
System.out.println(Arrays.toString(evenNumbers));
System.out.println("The following " +odd +" numbers are odd:");
System.out.println(Arrays.toString(oddNumbers));
}
スタックトレースを追加してください:あなたは、配列を使用する必要がある場合
は、その後にevenNumbersとoddNumbersアレイに割り当てた後に、コードの最後の部分を変更します。しかし、偶数/奇数を 'i
KevinO
例外がある場合、コンパイラは文句を言うことはできません – Sanj
これはコンパイルできません:for(i = 0; i
pczeus