В Java массивы и строки — это объекты, у которых элементы доступны по численному индексу. Индексация начинается с 0, поэтому первый элемент — array[0], последний — array[array.length-1]. Попытка обратиться за границы массива или строки вызывает ArrayIndexOutOfBoundsException или StringIndexOutOfBoundsException.
Для строк часто используют метод charAt(int index), а также substring(beginIndex, endIndex). Понимание индексов критически важно при работе с циклами, поиске символов и обработке текста. Здесь разберём основные правила доступа и типичные ошибки.
- Модуль 1: Первая программа и структура
- Модуль 2: Переменные и типы данных
- Объявление и инициализация переменных.
- Примитивы: целые числа (int, long, byte, short).
- Примитивы: дробные числа (double, float).
- Примитивы: логический тип (boolean).
- Примитивы: символьный тип (char).
- String — основы работы со строками.
- Приведение типов (Casting): расширение и сужение.
- Область видимости переменных (Scope).
- Модуль 3: Операторы
- Модуль 4: Управляющие конструкции
- Модуль 5: Массивы и Строки (Advanced)
- Создание и заполнение массива.
- Доступ к элементам по индексу.
- Свойство length и перебор массива.
- Цикл for-each для массивов.
- Многомерные массивы.
- Методы String: length, charAt, isEmpty.
- Манипуляции: substring, concat, replace.
- Сравнение строк: equals vs ==.
- Разделение строк (split) и trim.
- StringBuilder (изменяемые строки).
- Модуль 6: Методы
- Модуль 7: Классы и Объекты (ООП Часть 1)
- Модуль 8: Капсуляция и Модификаторы
- Модуль 9: Наследование и Полиморфизм (ООП Часть 2)
- Модуль 10: Обработка исключений
- Модуль 11: Коллекции и Дженерики
- Модуль 12: Функциональный стиль (Java 8+)
- Модуль 13: Полезные стандарты
1. Доступ к элементу массива
Дополните фрагмент кода на 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);
}
}2. Исправь ошибку индекса
В этом фрагменте 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. Что выведет код?
Проанализируйте фрагмент кода на 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. Выбери правильный способ получить символ
Дополните фрагмент программы на 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);
}}
5. Собери корректный вывод элементов
Из предложенных строк соберите корректную 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]);6. Введи значение элемента
Рассмотрите фрагмент 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. Отметь все корректные обращения по индексу
Перед вами фрагмент кода на 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}};