2013-09-24 5 views
-2

Хорошо, так это для лаборатории в колледже. Попытайтесь взять целые числа, которые вводит пользователь, помещают их в массив и распечатывают.Array за пределами Исключения?

Я получаю сообщение об ошибке при попытке скомпилировать.

Исключение в потоке "основного" 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]); 




} 

}

+2

Вы инициализируете пустой массив (0 полей), а затем пытаетесь получить доступ к его первому полю (индекс 0). – sheltem

+0

Вы также можете использовать массивList более гибкий – Marc

ответ

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

'ArrayIndexOutOfBoundsException' не происходит в этой строке, так как он защищен контуром. Исключение выбрано почти в конце кода в инструкции 'println'. –

+0

@AlonsoDominguez Правильно, позвольте мне исправить это. Благодарю. –

+0

спасибо за помощь! – Conor

2
int[] First = {}; 

intializes массив длиной 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); 
+0

спасибо за помощь! – Conor

2

Вместо этого вы должны использовать список, потому что ваш массив будет расти во времени. Вот почему вы не можете получить доступ к First [i], потому что ваш массив инициализируется пустым массивом (и останется таким же навсегда). Вы также можете инициализировать свой массив с помощью некоторых элементов (не в вашем случае использования) или используя новый с начальной емкостью.

+0

Спасибо! Будут знать в следующий раз. – Conor

0

Вместо этого вы должны использовать список, потому что ваш массив будет расти во времени.

Смежные вопросы