Java.lang.ArrayIndexOutOfBoundsException

 

Смысл сообщения – "выход за пределы массива", иными словами, зафиксирована попытка обращения к несуществующей в данном массиве ячейке.

 

Свойство "размер массива"

Есть ситуации, в которых необходимо создавать массив, размер которого при повторных запусках класса, должен быть разным. Более того, как раз такие приемы "гибкого" установления размера массива как очень популярны и в большинстве заданий условие формулируется так, чтобы избежать указаний на конкретно-числовой размер массива. Именно поэтому приемы гибкого задания размера массива очень эффективны в языке Java.

 

В языке Java осуществить гибкое установление размера массива довольно просто: достаточно объявить и инициализировать массив с использованием ввода размера массива с клавиатуры непосредственно в процессе инициализации:

 

int[] ocenka = new int[reader.nextInt()]

 

При таком варианте нет никакой возможности заранее знать размер массива – и вроде бы возникает проблема с написанием, например, цикла для заполнения массива значениями. Почему проблема? Да потому, что вроде бы непонятно (поскольку неизвестно…), до какого значения должна изменяться переменная-счетчик.

 

В таком случае нужно использовать встроенный в язык Java инструмент: свойство массива под названием "размер". Этот инструмент возвращает целое число, равное количеству ячеек в инициализируемом массиве (размер массива).

 

Свойство это записывается как служебное слово length, которое указывают после имени массива, через точку.

 

Приведем пример класса, заполняющего массив случайными числами и выводящего на экран значения ячеек массива. При этом размер массива устанавливается гибко, то есть, вводится с клавиатуры.

 

import java.util.*;