Доступ к элементам по индексу

Тренажер по Java для пользователей с начальным уровнем подготовки.

Тренажер по Java

В Java массивы и строки — это объекты, у которых элементы доступны по численному индексу. Индексация начинается с 0, поэтому первый элемент — array[0], последний — array[array.length-1]. Попытка обратиться за границы массива или строки вызывает ArrayIndexOutOfBoundsException или StringIndexOutOfBoundsException.

Для строк часто используют метод charAt(int index), а также substring(beginIndex, endIndex). Понимание индексов критически важно при работе с циклами, поиске символов и обработке текста. Здесь разберём основные правила доступа и типичные ошибки.

Список тем

1. Доступ к элементу массива

id: 40458_arr_01_replace

Дополните фрагмент кода на Java, чтобы он корректно обращался к элементам целочисленного массива по индексу. Вам нужно заполнить пропуски правильными индексами или именами переменных, чтобы код выполнялся без ошибок и выводил ожидаемые значения. Обратите внимание на нумерацию индексов в массиве (начинается с 0) и на объявленные переменные.

Заполните пропуски
public class Main {
    public static void main(String[] args) {
        int[] scores = {95, 87, 92, 78, 88};
        int firstScore = scores[input1S]; // Индекс первого элемента
        int thirdScore = scores[input2S]; // Индекс третьего элемента
        int lastIndex = scores.length - 1;
        int lastScore = scores[input3S]; // Индекс последнего элемента
        
        System.out.println("Первый балл: " + firstScore);
        System.out.println("Третий балл: " + thirdScore);
        System.out.println("Последний балл: " + lastScore);
    }
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

2. Исправь ошибку индекса

id: 40458_arr_02_error

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

Найдите ошибку и исправьте
public class Main {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};
        // Напечатаем последний элемент массива
        System.out.println("Last element: " + numbers[numbers.length]);
        // Ожидаемый вывод: Last element: 5
    }
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

3. Что выведет код?

id: 40458_arr_03_predict

Проанализируйте фрагмент кода на Java, в котором создаётся массив строк и несколько раз выполняется доступ к его элементам по разным индексам, в том числе вычисляемым через выражения и свойство length. Определите, какие именно строки и в каком порядке будут выведены в консоль, учитывая переносы строк и отсутствие лишних пробелов, и выберите один подходящий вариант из списка.

Выберите правильный вариант ответа
class Main {
    public static void main(String[] args) {
        String[] words = {"zero", "one", "two", "three", "four"};
        words[2] = words[4 - 1];
        System.out.println(words[0]);
        System.out.println(words[2]);
        System.out.println(words[words.length - 1 - 1]);
    }
}
Сообщения
Проверить
Показать подсказку

4. Выбери правильный способ получить символ

id: 40458_arr_04_select

Дополните фрагмент программы на Java, выбрав из выпадающего списка правильные выражения для получения отдельных символов и подстроки из строки text. Используйте методы charAt(), преобразование строки в массив символов и substring() так, чтобы типы данных совпадали с объявленными переменными, а программа компилировалась и выводила ожидаемый результат.

Нужно правильно расставить в пропуски предложенные варианты
class CharAccessDemo {
    public static void main(String[] args) {
        String text = "Hello Java"; // arr_04_select
        char first = input1S;
        char second = input2S;
        String hello = input3S;
        char last = input4S;
        System.out.println(first + " " + second + " " + hello + " " + last);
    }}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

5. Собери корректный вывод элементов

id: 40458_arr_05_build

Из предложенных строк соберите корректную Java-программу, которая создаёт строковый массив languages и с помощью цикла for по индексу выводит все его элементы в консоль. Важно использовать обращение к элементам по индексу массива внутри цикла. Две строки являются лишними и не должны входить в итоговое решение.

Перетяните в правильном порядке строки из одного блока в другой
public class Main {
    public static void main(String[] args) {
        String[] languages = {"Java", "Kotlin", "Scala"};
        for (int i = 0; i < languages.length; i++) {
            System.out.println(i + ": " + languages[i]);
        }
    }
}
        int[] numbers = {1, 2, 3};
        System.out.println(languages[3]);
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

6. Введи значение элемента

id: 40458_arr_06_give

Рассмотрите фрагмент Java-кода, в котором создаётся массив строк и затем по индексу выбирается один из его элементов. Вам нужно мысленно определить, какой именно элемент массива будет передан в метод System.out.println(). Введите в поле ответа точное содержимое этой строки без кавычек и лишних пробелов, учитывая регистр букв.

Что должно получиться?
public class Main {
    public static void main(String[] args) {
        String[] cities = {"Berlin", "Tokyo", "Oslo", "Sydney", "Toronto"};
        System.out.println(cities[3]);
    }
}
Сообщения
Проверить
Показать подсказку

7. Отметь все корректные обращения по индексу

id: 40458_arr_07_click

Перед вами фрагмент кода на Java с несколькими обращениями к элементам массивов и символьного массива по индексу в квадратных скобках. Ваша задача — выделить только те выражения с доступом через [], для которых по тексту программы индекс гарантированно находится в допустимом диапазоне и не может привести к ArrayIndexOutOfBoundsException. Учитывайте размеры создаваемых массивов, а также условия циклов: любые обращения, где индекс может выйти за границы или это неочевидно из кода, оставьте невыделенными.

Кликните по всем фрагментам, которые подходят под условие задания.
int[] numbers = new int[5];
int first = {{numbers[0]~|~t1}};
int last = {{numbers[4]~|~t2}};

int[] data = new int[10];
for (int i = 0; i < data.length; i++) {
    data[i] = i * 2;
}

int mid = {{data[5]~|~t3}};
int alsoLast = {{data[data.length - 1]~|~t4}};

int error1 = {{numbers[5]~|~t5}};
int error2 = {{data[-1]~|~t6}};

for (int i = 0; i < data.length; i++) {
    int v1 = {{data[i]~|~t7}};
    int v2 = {{data[i + 1]~|~t8}};
}

String name = "Java";
char[] nameChars = name.toCharArray();
char ch1 = {{nameChars[0]~|~t9}};
char ch2 = {{nameChars[nameChars.length]~|~t10}};
Сообщения
Проверить
Показать подсказку
НайтиКурс.Ру