Как правильно создать массив через цикл for? Где ошибка?
Этот оператор создает массив, состоящий из 100 целых чисел.
Элементы этого массива нумеруются от 0 до 99 (а не от 1 до 100).
После создания массив можно заполнять, например, с помощью цикла.
1 2 3
int [ ] int [ ] а = new int[100]; for (int i = 0; i 100; i++) a[i] = i; // Заполняет массив числами от 0 до 99.
Но по факту, массив просто заполняется рядом цифр от 1 до 100,
как бы не менялись условия цикла, i
Добавлено через 1 минуту
** Последняя строка кода не пропечаталась
a[i] = i; // Заполняет массив числами от 0 до 99.
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Как создать многочлен n-ой степени, где коэффициенты многочлена выводятся через массив?
как создать многочлен н-ой степени где коэффициенты многочлена выводятся через массив
Как правильно отобразить данные через цикл
Я написал код, он читает количество совпадений в тексте string line =.
Как правильно создать цикл или функцию
Добрый день! Подскажите пожалуйста, хочу сделать цикл или функцию что бы повторялось i-раз. Но не.

Как правильно закончить вод чисел через цикл while(cin>>x)?
Собственно вопрос состоит в том чтобы правильно закончить цикл while. Мне нужно чтобы после ввода.
Регистрация: 23.12.2016
Сообщений: 124
Попробую обьяснить просто, возможно ошибусь. Есть такая штука как стэк (можешь погуглить в интернете). По сути данные в нем хранятся по принцепу игры Jenga. Что такое массив? Это переменная с указателем на размер массива. Если смотреть на примере игры Jenga, то получается что у нас есть одна дощечка физическая, которую мы называем a[0], так же у нас есть еще 99 контейнеров для досок, которые мы можем заполить в удобный для нас момент. Назавать мы это контейнеры можем a[1] . a[99]. Получается что массив это одна переменная и определенный отступ для новых чисел, размер которого мы задаем в скобках.
Добавлено через 2 минуты
Но по факту, массив просто заполняется рядом цифр от 1 до 100,
как бы не менялись условия цикла, i
Попробуй прерформулировать вопрос. О какой ошибке ты говоришь?
Регистрация: 13.12.2017
Сообщений: 192
Согласен, для заполнения, достаточно
int [ ] int [ ] а = new int[100];
при print-е будет выводится от 1 до 100, но зачем остальные строки,
или это как раз прилюдия к print-у,
Я сначала подумал, что первая строчка — резервирует место, а for заполняет в заданном порядке,
но видимо это не так. . чайник.
WWN у меня ещё вопрос в теме
Функция, принимающая два аргумента и возвращающая все числа, которые делятся на заданный делитель, помоги разобратmся, зачем 2 for
![]()
3638 / 2970 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
Сообщение от Сергей_СПб 
Как заполнить массив значениями, каждое из которых больше предыдущего на 3, с помощью цикла
Нужно создать пустой массив из 10 целых чисел и с помощью цикла заполнить его значениями, каждое из которых будет на 3 больше предыдущего (начиная с 1), то есть получить [1, 4, 7, 10, 13, 16, 19, 22, 25, 28] . Написал такой код:
public class massiv < public static void main(String[] args) < int[] array = new int[10]; array[0] = 1; for (int i = 0; i < array.length; i++) < array[i] = array[i] + 3; //вот тут туплю - не пойму как решить System.out.println(array[i]); >> >
Как правильно заполнить массив?
Отслеживать
19.1k 6 6 золотых знаков 30 30 серебряных знаков 44 44 бронзовых знака
задан 27 фев 2017 в 12:55
135 1 1 золотой знак 2 2 серебряных знака 13 13 бронзовых знаков
array[i] = i*3 + 1;
27 фев 2017 в 13:01
6 ответов 6
Сортировка: Сброс на вариант по умолчанию
Цикл со второго элемента массива.
public static void main(String[] args) < int[] array = new int[10]; array[0] = 1; for (int i = 1; i < array.length; i++) < array[i] = array[i - 1] + 3;//вот тут туплю - не пойму как решить System.out.println(array[i]); >>
До начала цикла мы присваиваем значение элементу [0]. Затем начинаем цикл с элемента [1]. На каждом шаге итерации мы используем предыдущий элемент для добавления к нему 3 и присвоения следующему элементу.
Так цикл работает:
array[1] = array[0] + 3. Получаем array[1] = 4.
Потом array[2] = array[1]+3. Получаем array[2] = 4+3 = 7, ну и т.д.
Отслеживать
ответ дан 27 фев 2017 в 12:59
KAGG Design KAGG Design
35.1k 4 4 золотых знака 24 24 серебряных знака 53 53 бронзовых знака
объясни автору почему array[i-1]
27 фев 2017 в 13:23
так вроде объяснили ниже в каментах. ОК, попытка №2 )) До начала цикла мы присваиваем значение элементу [0]. Затем начинаем цикл с элемента [1]. на каждом шаге итерации мы используем предыдущий элемент для добавления к нему 3 и присвоения следующему элементу. Так работает: array[1] = array[0] + 3. Получаем array[1] = 4. Потом array[2] = array[1]+3. Получаем array[2] = 4+3 = 7, ну и т.д.
27 фев 2017 в 13:39
Так-то у нас тут заведено объясни понимать как дополни ответ . Полезная инфа не должна пылиться в комментариях.
6. Массивы (Java. Базовый курс)

На данном уроке разберём что такое массивы, какие виды массивов бывают и как их использовать при разработке программ на Java.
Массивы
Часто на практике приходится работать с целыми наборами данных. Например для календаря нам нужен список названий месяцев, но как его хранить? Создавать 12 переменных и писать большое количество кода для работы с этими переменными? Это плохое решение, оно громоздкое, запутанное и неудобное. К счастью в языке Java есть отличная альтернатива — массивы.
Массив позволяет хранить целый набор данных определённого типа. По большому счёту массив можно представить себе как пронумерованный список или в более сложном случае — таблица. Массивы очень широко используются в приложениях и очень сильно упрощают обработку информации.
Одномерный массив
Одномерный массив представляет собой список однотипных элементов. На рисунке ниже приведён пример одномерного массива из 8 элементов:

В данном примере в качестве элементов массива выступают различные числа. Кроме этого, каждой ячейке массива соответствует свой индекс, по которому можно получить значение, записанное в ячейку. Обратите внимание что нумерация элементов массива начинается с нуля, это очень важный момент!
Общая форма объявления массива выглядит так:
тип_данных[] имя_массива = new тип_данных[размер_массива];
Напишем простую программу, которая по номеру месяца будет выводить его название:

В строке 8 инициализируется массив строк months размером в 12 элементов — ровно столько нам нужно для хранения всех названий месяцев:
String[] months = new String[12];
В строках с 9 по 20 в каждый элемент массива months записывается название месяца. Обращение к элементу идёт по его индексу в квадратных скобках — таким образом мы можем как записать данные в ячейку, так и прочитать. Важный момент — первый элемент имеет индекс 0, как я уже писал выше.
months[0] = "январь"; months[1] = "февраль"; months[2] = "март"; months[3] = "апрель"; months[4] = "май"; months[5] = "июнь"; months[6] = "июль"; months[7] = "август"; months[8] = "сентябрь"; months[9] = "октябрь"; months[10] = "ноябрь"; months[11] = "декабрь";
После того как массив заполнен элементами, программа просит пользователя ввести номер месяца и сохраняет его в переменную number:
Scanner input = new Scanner(System.in); System.out.println("Введите номер месяца:"); int number = input.nextInt();
Далее в строке 26 программа выводит в консоль название месяца, которое достаёт из массива по индексу. Так как нумерация индексов идёт с нуля, то мы должны из number вычесть единицу, чтобы получить правильное название месяца. Например 5 месяц в году это май, но в массиве значение “май” хранится в элементе с индексом 4, поэтому когда пользователь введёт номер 5, мы должны вычесть из него 1 и получим 4:
System.out.println(months[number-1]);
В данном случае я не сделал проверку на корректность ввода данных, поэтому если пользователь введёт неправильное число, например 100, то приложение выдаст ошибку ArrayIndexOutOfBoundsException. Это значит что была попытка обратиться к несуществующему элементу массива.
Полный листинг программы:
package ru.akutepov.example1; import java.util.Scanner; public class MonthByNumber < public static void main(String[] args) < String[] months = new String[12]; months[0] = "январь"; months[1] = "февраль"; months[2] = "март"; months[3] = "апрель"; months[4] = "май"; months[5] = "июнь"; months[6] = "июль"; months[7] = "август"; months[8] = "сентябрь"; months[9] = "октябрь"; months[10] = "ноябрь"; months[11] = "декабрь"; Scanner input = new Scanner(System.in); System.out.println("Введите номер месяца:"); int number = input.nextInt(); System.out.println(months[number-1]); >>
Данный пример выглядит довольно громоздко, но есть способ его упростить. Познакомимся с ещё одной формой инициализации массива в Java:
тип_данных[] имя_массива = ;
Эта форма позволяет заполнять массив значениями сразу во время его инициализации, что сокращает количество кода.
Перепишем программу и посмотрим что получится:

Так гораздо лучше — код уже не выглядит таким громоздким, при этом логика осталась та же самая. В зависимости от ситуации можно использовать любую из форм инициализации массива.
Полный листинг программы:
package ru.akutepov.example2; import java.util.Scanner; public class MonthByNumber < public static void main(String[] args) < String[] months = ; Scanner input = new Scanner(System.in); System.out.println("Введите номер месяца:"); int number = input.nextInt(); System.out.println(months[number - 1]); > >
Пример работы полученной программы:

Эту программу можно было бы написать без использования массива, например делать проверку номера месяца через оператор switch и выводить соответсвующее название. При этом решение с оператором switch тоже было бы вполне рабочим, но не таким красивым. Из этого следует вывод, что любую задачу можно решить несколькими способами и программист должен уметь выбрать оптимальное решение.
Многомерные массивы
В языке Java многомерные массивы представляют собой массивы массивов. Самый распространённый вид многомерных массивов — двумерные массивы.
Рассмотрим пример объявления такого массива:
int[][] a = new int[5][5];
В данном примере был проинициализирован двумерный массив a размером 5 на 5, который можно представить ввиде таблицы:
Массивы
Как и все языки программирования, Java содержит набор коллекций, изучение которых, по традиции, начнём с массивов. Массивы в программировании напоминают жилые массивы, с нумерацией домов.
Массив представляет набор однотипных значений. Объявление массива похоже на объявление обычной переменной, но отличается использованием прямоугольных скобок.
Для объявления массива есть два способа:

Например, определение массива для целых чисел:

Массив, как и переменная, требует инициализации:

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

это массив из четырех элементов типа int, и каждый элемент будет иметь значение по умолчанию — число 0.
Для числовых типов (в том числе для типа char) это число 0, для типа boolean это значение false, а для остальных объектов это значение null.
Можно объявлять и инициализировать одновременно:

Можно объявлять массив и сразу заполнять его нужными значениями (оба способа верны):

Размер массива, при таком способе, вычисляется по количеству элементов в фигурных скобках.
После создания массива можно обращаться к элементу по индексу — порядковый номер элемента, отсчёт которого начинается с нуля:
int[] nums = < 1, 2, 3, 5 >; // начальные значения // устанавливаем новые значения элементов nums[0] = 6; // 1-й элемент nums[1] = 4; // 2-й элемент nums[2] = 6; // 3-й элемент nums[3] = 8; // 4-й элемент // т.к. массив – изменяемый тип данных // а теперь получаем значение 3-его элемента System.out.println(nums[2]); // 6
Массивы: индексы и границы
Одна из распространённых ошибок по работе с массивом – обращение по несуществующему индексу:
int[] nums = < 1, 2, 3, 5 >; // начальные значения // у массива 4 значения, индексы: 0, 1, 2, 3 System.out.println(nums[2]); // 3 System.out.println(nums[4]); // ошибка // значения по индексу 4 не существует
Ошибка возникла из-за того, что память была выделена под четыре элемента. Поэтому обратиться к 5-му нельзя.
По адресу 5-го элемента могут находиться важные данные и подобный подход защищает их.
Можно ли определить длину массива? Для этого существует свойство length. Оно возвращает число элементов:

Когда бывает неизвестным последний индекс, то для его получения можно использовать это свойство:
int last = nums[nums.length - 1];
Массивы и циклы
Пример кода, объединяющего массивы и циклы:
public static void main(String[] args) < final int size = 5; // размер массива // инициализация массива размером size int array[] = new int[size]; int counter = 0; // объявляем и обнуляем счётчик // заполняем массив случайными значениями // с помощью цикла while while (counter < size) < int rnum = (int) (Math.random() * 10); array[counter] = rnum; counter++; // инкремент счётчика >// end while // мы не знаем какие числа попали в массив, // поэтому выведем их циклом for for (counter = 0; counter < size; counter++) < System.out.printf("Element #%d in array = %d\n", counter + 1, array[counter]); >// end for > // end main
Вот и настал момент ознакомиться с ещё одним циклом. Это for-each.
For-each — это разновидность цикла for, которая используется, когда нужно обработать все элементы массива или коллекции. “For each” с английского так и переводится — “для каждого”.
Cамо словосочетание for each в этом цикле не используется. Его синтаксис следующий:

- type — тип итерационной переменной (совпадает с типом данных в массиве!);
- itVar — её имя;
- array — массив.
Немного изменим предыдущий код, используя for-each:
public static void main(String[] args) < final int size = 5; // размер массива // инициализация массива размером size int array[] = new int[size]; // заполняем массив случайными значениями циклом for for (int counter = 0; counter < size; counter ++) < int rnum = (int) (Math.random() * 10); array[counter] = rnum; >// end for System.out.printf("Array of %d values: [ ", size); // выведем случайные значения циклом for-each for (int item : array) < System.out.printf("%d ", item); >// end for-each System.out.println("]"); > // end main
При необходимости, размер массива после стартовой инициализации, можно поменять (resize):
public static void main(String[] args) < int[] numberArray = < 12, 24, 63, 45 >; // массив из 4 элементов System.out.println("Array before ReSize: "); for (int item: numberArray) < System.out.println(item); >// end for-each int[] temp = new int[6]; // выделяем память под 6 элементов for (int i = 0; i < numberArray.length; i++) < temp[j] = numberArray[j]; // поэлементное присвоение >// существующих значений numberArray = temp; // переприсвоение System.out.println("Array after ReSize: "); for (int item: numberArray) < System.out.println(item); >// end for-each > // end main
Найдем теперь минимальное значение в массиве. Чтобы код заработал в импортах добавляем import java.util.Arrays;
final int size = 5; // размер массива int array[] = new int[size]; int minValue = Integer.MAX_VALUE; // тут будет минимум for (int counter = 0; counter < size; counter ++) < int rnum = (int) (Math.random() * 10); array[counter] = rnum; >// end for System.out.println("Array: " + Arrays.toString(array)); // найдём минимальное значения массива циклом for-each System.out.print("Min value: "); for (int item : array) < if(item < minValue) minValue = item; >// end for-each System.out.println(minValue);
Для поиска максимального значения код немного дорабатывается. Чтобы код заработал в импортах добавляем import java.util.Arrays;
final int size = 5; // размер массива int array[] = new int[size]; int maxValue = Integer.MIN_VALUE; // тут будет максимум for (int counter = 0; counter < size; counter ++) < int rnum = (int) (Math.random() * 10); array[counter] = rnum; >// end for System.out.println("Array: " + Arrays.toString(array)); // найдём минимальное значения массива циклом for-each System.out.print("Max value: "); for (int item : array) < if (item >maxValue) < maxValue = item; >> // end for-each System.out.println(maxValue);
Среднее арифметическое находится как сумма элементов массива, делённая на их число. Чтобы код заработал в импортах добавляем import java.util.Arrays;
final int size = 5; // число элементов массива int array[] = new int[size]; double average = 0; // тут будет среднее арифметическое double sum = 0; // тут будет сумма значений массива for (int counter = 0; counter < size; counter ++) < int rnum = (int) (Math.random() * 10); array[counter] = rnum; >// end for System.out.println("Array: " + Arrays.toString(array)); // найдём сумму значений массива циклом for-each System.out.print("Average value: "); for (int item : array) < sum += item; >// end for-each average = sum / size; // среднее арифметические System.out.println(average);
Строка – это тоже массив символов, но код:

array required, but java.lang.String found
(требуется массив, а найдена строка)
Строки будут изучаться позднее, но важно знать, что строка, хотя и является массивом символов, но работа с ней отличается.
Правильным подходом является использование метода:
charAt(index)
Вот пример кода работы со строкой:
public static void main(String[] args) < String word = "Hello"; // Вывод второго символа слова Hello System.out.printf("Second letter of Hello ->%s\n\n", word.charAt(1)); // Преобразуем строку в массив символов var array = word.toCharArray(); // Выводим элементы массива циклом for-each for (char symbol : array) < System.out.println(symbol); >// end for-each > // end main
Массивы бывают не только линейными (строчными, одномерными), но и многомерными. Например двумерный массив — матрица (таблица) — будет рассмотрен в следующем разделе.