我正在生成一个java程序,该程序生成随机数然后将它们放入数组中。然后程序应该通过数组,将偶数和奇数放入两个新数组中,并将它们呈现给用户。该程序还会告诉用户阵列中有多少个奇数和偶数。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 <数字.length;我++){ – pczeus