-2

好的,这适用于大学的实验室。尝试接收用户输入的整数,将它们放入数组中并打印出来。

尝试编译时出现错误。

线程“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

4 回答 4

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.

于 2013-09-24T14:03:07.343 回答
2

You should use a List instead, because your array will grow in time. That's why you can't access First[i], because your array is initialized with an empty array(and will stay like that forever). You can also initialize your array with some elements(not your use case) or using new with an initial capacity.

于 2013-09-24T14:05:44.610 回答
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);
于 2013-09-24T14:03:25.710 回答
0

您应该改用 List,因为您的数组会随着时间增长。

于 2013-09-25T03:24:59.173 回答