Непонятно как работает counts[x]++

Рейтинг: -4Ответов: 2Опубликовано: 14.06.2023

Как понять этот код counts[x]++?

Смотрела примеры, запускала код с отладчиком. Можно самый простой пример?

Ответы

▲ 2Принят

Для начала разберёмся вообще, что делает это таинственное ++.

Возьмём вот такой код:

int number = 5;
number++;
System.out.println(number);

Вставим в метод main() и запустим. Получаем вывод:

6

То есть переменная увеличилась на один. Отсюда вывод:

number++; 

то же самое, что и

number = number + 1;

Обновление: не совсем тоже самое, см этот ответ. Но в данном конкретном случае разницы не будет. А чтобы разницы не было ни в каком случае, можно number++ на ++numner заменить.

Загадочное counts[x]

У нас же была другая запись:

counts[x]++;

Раз мы уже знаем, что такое ++, то осталось лишь понять что такое counts[x].

Представим эту запись попроще: counts[4]. counts - это массив. А 4 - это индекс в массиве, порядковый номер элемента в массиве (Первый индекс массива - ноль!!!). Чтобы стало понятней, продемонстрирую на коде:

int counts = new int[]{
                       4, //Это counts[0]
                       3, //Это counts[1]
                       9, //Это counts[2]
                       5, //Это counts[3]
                       7  //Это counts[4]
                      };

System.out.println(counts[4]); //Выведет 7, так как в counts[4] мы положили число 7 

А x - это переменная (целочисленного типа). До этого мы обращались к индексу массива, записывая в квадратные скобки число (counts[4]). Но в квадратные скобки можно записать и целочисленную переменную. Тогда из переменной будет взято число - оно и будет индексом массива, к которому мы обратимся:

int x = 4;
System.out.println(counts[x]); // 7
counts[x]++;
System.out.println(counts[x]); // а теперь 8

Подытожим

Запись counts[x]++ означает, что мы обращаемся к массиву counts, берём элемент с индексом x, и увеличиваем этот элемент на единицу. Индекс x при этом не изменяется.

▲ -5

Выражение counts[x]++ увеличивает значение элемента массива counts, индекс которого равен x, на 1.

Пример использования: предположим, что у нас есть массив counts, который содержит количество разных цветов шариков в корзине, а также переменная x, которая хранит текущий выбранный цвет шарика. Чтобы увеличить счетчик выбранного цвета, мы можем использовать выражение counts[x]++:

//JS
let counts = [0, 0, 0, 0]; // массив для подсчета количества шариков разных цветов
let x = 2; // выбранный цвет - третий по порядку (индекс 2)
counts[x]++; // увеличиваем счетчик выбранного цвета на 1
console.log(counts); // [0, 0, 1, 0]
//Java
int[] counts = new int[4]; // массив для подсчета количества шариков разных цветов
int x = 2; // выбранный цвет - третий по порядку (индекс 2)
counts[x]++; // увеличиваем счетчик выбранного цвета на 1
System.out.println(Arrays.toString(counts)); // [0, 0, 1, 0]

В этом примере после выполнения counts[x]++ значение counts[2] увеличивается на 1, и теперь массив counts выглядит как [0, 0, 1, 0], что означает, что в корзине есть один шарик третьего цвета.