数组越界异常?

时间:2013-09-24 14:01:52

标签: java arrays

好的,这对于大学的实验室而言。想要接受用户输入的整数,将它们放入一个数组并打印出来。

我在尝试编译时遇到错误。

线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:0     在Lab3.main(Lab3.java:12)

public class Lab3 {


public static void main(String[] args) {


int[] First = {};

for(int i=0;i<First.length;i++)
{
    First[i] = (int)(Math.random() *10 +1); 
    System.out.print(First[i] + " ");
}
for(int i=0;i<First.length;i++)
{






    if (First[i]%2==0)
    {

        System.out.println("Even numbers are:"+First[i]);
    }


}

for(int i=0;i<First.length;i+=2)    
{

    if (First[i]%2==0)
    {

        System.out.println("Even numbers are:"+First[i]);
    }



}

for(int i=0;i<First.length;i++)
{
        int temp = First[i];
        First[i] = First[First.length - i - 1];
        First[First.length - i - 1] = temp;
        System.out.println("Reverse is:"+temp);
}


System.out.println("First is:"+First[0]);
System.out.println("First is:"+First[9]);




}

}

4 个答案:

答案 0 :(得分:4)

通过

int[] First = {};
// is the same as
int[] First = new int[0];

你正在创建一个包含0个元素的数组。然后,您尝试访问第一个元素。

System.out.println("First is:"+First[0]); // access first element of empty array?

由于您没有元素,您如何访问它们?创建一个包含10个元素的数组

int[] First = new int[10];

如果您想要静态集合(不可调整大小)或使用List实现来获得动态集合(可调整大小)。


Java命名约定规定变量应以小写字母字符开头。使用camelCase

答案 1 :(得分:2)

int[] First = {};

初始化0长度数组。

First[0]不存在。提及长度作为声明的一部分或稍后。

First = new int[10]; //creates an array of 10 ints

请注意,上面会在First[11]

上抛出相同的异常

如果您不确定尺寸,可以改用ArrayList

List<Integer> first = new ArrayList<Integer>();
first.add((int)Math.random() *10 +1);

答案 2 :(得分:2)

您应该使用List,因为您的数组会及时增长。这就是为什么你不能访问First [i],因为你的数组用一个空数组初始化(并且将永远保持这样)。您还可以使用某些元素(不是您的用例)或使用具有初始容量的new来初始化数组。

答案 3 :(得分:0)

您应该使用List,因为您的数组会及时增长。