Как заполнить двумерный массив java
Перейти к содержимому

Как заполнить двумерный массив java

  • автор:

Как заполнить двумерный массив в Java

Не могу понять, как заполнить двумерный массив цифрами от 1 до 8 размерностью 8 на 8, кроме как заполнить его вручную. Но это очень не эффективно. Как сделать?

Отслеживать
13.7k 12 12 золотых знаков 43 43 серебряных знака 75 75 бронзовых знаков
задан 2 янв 2018 в 4:48
159 1 1 золотой знак 1 1 серебряный знак 10 10 бронзовых знаков

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

public class Main < public static void main(String[] args) < int[][] arr = new int[8][8]; for (int i = 0; i < arr.length; i++) < for (int j = 0; j < arr[i].length; j++) < arr[i][j] = j + 1; >> for (int[] anArr : arr) < for (int anAnArr : anArr) < System.out.print(anAnArr + " "); >System.out.println(); > > 

Отслеживать
ответ дан 2 янв 2018 в 5:32
331 1 1 серебряный знак 7 7 бронзовых знаков

    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.9.3159

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Как заполнить двумерный массив java

Чтобы заполнить двумерный массив в Java , можно использовать два вложенных цикла for . Например, для заполнения двумерного массива nums размера n на m случайными числами можно написать следующий код:

import java.util.Random; public class Main  public static void main(String[] args)  int n = 3; int m = 4; int[][] nums = new int[n][m]; Random random = new Random(); for (int i = 0; i  n; i++)  for (int j = 0; j  m; j++)  nums[i][j] = random.nextInt(10); > > > > 
  • сначала объявляем переменные n и m — размеры массива,
  • затем создаем двумерный массив nums размера n на m ,
  • создаем объект Random для генерации случайных чисел
  • заполняем массив случайными числами с помощью вложенных циклов for , где i и j — это индексы элементов массива.

Как заполнить двумерный массив java

Крайне рекомендую хотя бы переписать код(Не ctrl+C -> ctrl+V, а ручками), где создается шахматное поле, до прочтения статьи не было совсем ясно, как класть разные буквы и цифры в нужные ячейки массива. Спасибо за открытие этого метода:

 Character.toString(letters.charAt(a)) 

Про перемножение матриц и задачи с многомерными массивами, пока не понял, но в закладки добавил �� Уже выработалось понимание, «Если в этот раз непонятно, то просто прочти до конца, а потом посмотри на это под другим углом» Когда-то я не понимал самих массивов��

Владислав Уровень 16
26 февраля 2023

перемножение матриц бошку вынесло, когда попытался представить написанный код)) короче если мне попадется такая задача, я сначало залезу в википедию, чтобы лучше понять) И это при условии, что я сдавал линейную алгебру в универе, прошло с тех пор 15 лет — я забыл 90%!

18 февраля 2023

Пришлось вспоминать как работают матрицы. А ведь я и подумать не мог, что после экзамена ещё хоть раз в жизни их увижу. Кстати, спасибо за пример с парковкой��

Kergshi Уровень 20
9 февраля 2023

Если у кого возникнет вопрос в примере вывода шахматной доски с с нумерацией ячеек,да! Вы правильно подумали,да,можно выбросить к черту повтор 2-х циклов ,а выводы сразу первых двух писать и будет работать точно также. Конечно,может я еще глуп и эта абра-кадабра с повторением одного и того же имеет смысл,но так как объяснения этому нет,то я «лишнее» выкинул и всё так же в итоге осталось по работоспособности.

Kergshi Уровень 20
9 февраля 2023

Просвятите,пожалуйста,почему второй пример с доской,если скопировать, не работает в идее,выдаёт 15 ошибок. Циклы for вообще за циклы не воспринимает.

Kergshi Уровень 20
25 января 2023

Да как разобраться во всей это куче ссылок. Идешь просто по курсу и тут на тебе,100500 ссылок почить то,почитать это. А там еще штук пять. Тут просто массивы,там «кое-что о массивах»,»массивы в Java». С ума сойти можно

Kirill Уровень 21
25 декабря 2022

Как раз ищу ответ на это высказывание: «Если мы имеем дело с прямоугольными двумерными массивами (то есть такими, у которых все строки одинаковой длины), то можно применить операцию twoDimArray[0].length или вместо нулевого элемента (по сути — нулевой строки) — любой другой существующий. Мы можем так поступить, потому что в Java двумерный массив — это массив массивов, и нулевой элемент twoDimArray[0] — это массив длины 4. Можете проверить это самостоятельно.» Что они имеют ввиду? Не вижу связи. Почему 0, а не [I]? Подскажите!

Олег Уровень 108 Expert
12 декабря 2022
Здравствуйте. Похоже в строке a[1][0]*b[0][0] + a[1][1]*b[0][1] + … + a[0][m-1]*b[m-1][0] ошибка.
Denis Odesskiy Уровень 31
11 декабря 2022

Здравствуйте! Не могу понять зачем в листинге с примером про шахматную доску перед выводом результата в консоль повторен этот цикл:

 for (int i = 0; i < chessBoard.length; i++) < for (int j = 0; j < chessBoard[0].length; j++)  

С ним у меня пример не работает, а без него работает, это опечатка? Или в чем моя ошибка? Вот мой листинг кода без этого цикла:

 public class CheessBoard < public static String cheessBoardCoord(int a, int b) < String letters = "abcdefgh"; String numbers = "87654321"; if ((a >7) || (b > 7)) return null; //если номер за пределами доски, возвращаем значение по умолчанию - null else return (Character.toString(letters.charAt(a)) + numbers.charAt(b)); /*charAt - метод, с помощью которого мы извлекаем из строки элемент под переданным номером, здесь - под номерами a и b. Character.toString - метод, который переводит полученный символ в строку*/ > public static void main(String[] args) < //задаём шахматную доску двумерным массивом String[][] cheessBoard = new String[8][8]; for (int i = 0; i < cheessBoard.length; i++) < for (int j = 0; j < cheessBoard[0].length; j++) < if ((i + j) % 2 == 0) cheessBoard[i][j] = "W" + cheessBoardCoord(j, i); else cheessBoard[i][j] = "B" + cheessBoardCoord(j, i); System.out.print(" " + cheessBoard[i][j] + " "); >System.out.println(); > > > 

В примере с умножением матриц ошибка, - не объявлен тип переменной k:

 for (k=0; k 

Что такое массивы в Java и как с ними работать

Массив — это набор однотипных элементов, упорядоченных по номерам.

Как работать с массивами Java

Анастасия Хамидулина
Автор статьи
7 июня 2022 в 14:40

В жизни мы часто сталкиваемся с массивами — например, жилыми или лесными. То есть совокупностью множества однородных предметов. Чтобы разделять элементы, им иногда присваиваются номера: в жилом массиве после названия улицы идет номер дома, корпуса.

Это справедливо и для массивов в программировании — набора однотипных элементов, расположенных в памяти друг за другом.

Зачем нужны массивы в Java

Без массивов, чтобы работать с набором однотипных данных, для каждого элемента объявляли бы отдельную переменную. Каждый раз устанавливали бы правила именования таких переменных, чтобы в них не запутаться. Запоминали бы, сколько переменных уже создали.

При этом компилятору нужно было бы понимать, что с набором объявленных в разных местах переменных вы хотите работать как с единым целым. Располагать их в памяти рядом друг с другом, чтобы эффективно записывать и читать значения. Массивы же упрощают такое количество работы.

С циклами и массивами студентов знакомят в первом блоке курса Skypro «Java-разработчик». Это необходимый минимум теории, чтобы начать писать код. Дальше начнете применять знания на практике, разработаете собственное приложение, которое сможете положить в портфолио. А центр карьеры подскажет, как лучше составить резюме, и подготовит к собеседованию, чтобы найти работу по новой профессии еще до окончания курса.

Объявление массива в Java

Чтобы начать работу с массивом, первым делом его нужно объявить — как и обычную переменную. Это выглядит так:

double[] myFancyArray;

Идущие подряд открывающая и закрывающая квадратные скобки сообщают компилятору, что переменная — массив. Тип элементов задает стоящий перед скобками оператор. Это может быть любой из поддерживаемых в Java примитивных типов данных, например int, byte, char, название класса или перечисления — enum. В нашем примере массив будет состоять из вещественных чисел.

Допустима форма объявления, где скобки ставят после названия переменной:

double myFancyArray[];

Такая форма объявления массива пришла в Java из языка C, но ее употребляют редко.

Создание массива в Java

После объявления массива его нужно создать. На этом этапе сообщают компилятору необходимый размер. С точки зрения компилятора Java-массив — это объект. Поэтому его, как и объект, создают при помощи ключевого слова new. Общий синтаксис:

new имя_массива[длина_массива];

Объявление и создание массива может быть описано одной строкой:

double[] myFancyArray = new double[5];

Или с помощью отдельных операторов:

double[] myFancyArray; myFancyArray = new double[5];

Станьте Java-разработчиком в два раза быстрее
Ускоренный курс для тех, кто хочет быстрее перейти на удаленку

Чтение и запись элементов

Массив — это пронумерованный набор. Доступ к каждому элементу осуществляют по его номеру (индексу). Нумерация элементов массива начинается с нуля, а не с единицы, поэтому первый элемент массива будет с индексом 0, а последний — «длина_массива — 1».

Чтение и запись элементов

Нумерация элементов массива

Общий синтаксис оператора доступа к элементу массива:

имя_массива[индекс элемента]

Пример чтения значения элемента:

System.out.println(myFancyArray[3]);

Пример записи значения элемента:

myFancyArray[4] = 1.5;

Инициализация массива в Java

Чтобы выполнять действия, заполните массив нужными значениями — инициализируйте. Сделать это можно несколькими способами.

✔️ Поочередно записывать значения в каждый элемент массива:

myFancyArray[0] = 0.5; myFancyArray[1] = 1.0; myFancyArray[2] = 1.5; myFancyArray[3] = 2.0;

✔️ С помощью цикла:

for (int i=0; i

✔️ Когда создаете массив:

double[] myFancyArray = new double[] ;

или без new:

double[] myFancyArray = ;

Длина массива

Не нужно указывать длину массива при инициализации в момент объявления. Компилятор выведет ее из количества значений в выражении.

❗ Важно: когда вы создадите массив, изменить длину уже не получится. Если захотите, чтобы массив был длиннее, придется создать новый и скопировать в него значения старого. Затем присвоить переменной значение нового массива.

Немного упростит операцию статический метод arraycopy из утилитарного класса System.Синтаксис метода:

System.arraycopy(src, srcPos, dest, destPos, length);

src — старый массив;

srcPos — позиция в старом массиве, с которой начинают чтение;

dest — новый массив;

destPos — позиция в новом массиве, с которой начинают запись;

length — количество элементов, которые надо прочитать из старого массива.

Так увеличивают длину массива:

double[] values = new double[2]; values[0] = 1.0; values[1] = 1.5; double[] tmpValues = new double[3]; System.arraycopy(values, 0, tmpValues, 0, values.length); values = tmpValues;

Чтобы узнать длину массива, прочитайте значение переменной length, ассоциированной с ним:

int arrayLength = myFancyArray.length; System.out.printLn(arrayLength);

Значение длины поможет в работе с циклом for:

double[] myFancyArray = new double[5]; for (int i = 0; i

Вывод массива

Удобно пользоваться оператором цикла for:

String[] weekDays = ; for (int i = 0; i

В версиях Java после 1.6 доступен оператор foreach:

String[] weekDays = ; for (String weekDay: weekDays)

В Java после версии 1.8 появились Stream API — стримы, которые тоже упрощают работу. Преобразовать массив в стрим поможет статический метод stream в утилитарном классе Arrays.

String[] weekDays = ; Arrays.stream(weekDays).forEach(weekDay -> System.out.println(weekDay) );

Вывод массива

Результат вывода массива

Одномерные и многомерные Java-массивы

Типом элемента массива может быть любой тип данных, который поддерживает язык программирования. В случае с Java тип элемента — объект. Массив — это тоже объект. Поэтому ничто не мешает объявить в качестве переменной массив массивов:

double[][] myMatrixArray;

Такой массив называют двумерным, или матрицей. Простой же массив, где элемент — не другой массив, считают одномерным. Структуру двумерного массива можно представить в виде таблицы:

Одномерные и многомерные Java-массивы

Вы получите доступ к элементу такого массива, если укажете номер строки и столбца этой таблицы:

myMatrixArray[i][j] = 3.4;

i — номер строки, а j — номер столбца

При этом выражение myMatrixArray.length вернет количество строк в таблице. А с помощью выражения myMatrixArray[0].length получите количество столбцов в строке.

Объявляют двумерный массив, в котором элементы опять будут массивом, так:

double[][][] myCubeArray;

Такой массив называют трехмерным, или кубом. Для доступа к элементу укажите уже три индекса.

Можно объявлять и четырех-, пяти- и десятимерные массивы. Максимальное количество измерений ограничено спецификацией Java — 255. Это объявление переменной выдаст ошибку компиляции:

double[][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] [][][][][][][][][][][][][][][][] myUberArray;

Ошибка появится, потому что количество измерений объявленного массива равно 256.

Нарушение компиляции

Ошибка компиляции при попытке объявить массив, у которого слишком много измерений

Методы для работы с массивами

Стандартная библиотека Java предоставляет набор методов, которые помогают работать с массивами. Они представлены как статические методы в утилитарном классе Arrays.

�� Преобразование к строке

Чтобы вывести массив на печать, воспользуйтесь методом Arrays.toString(a). Он преобразует массив в строку со значениями всех элементов массива, разделенных запятой. Начало и конец будут обозначены квадратными скобками.

int[] myArray = new int[] ; System.out.println(Arrays.toString(myArray));

Методы для работы с массивами

Результат преобразования массива к строке

�� Сортировка

Arrays.sort(a) отсортирует массив a в порядке возрастания значений элементов. Если нужно отсортировать в другом порядке, воспользуйтесь методом Arrays.sort(a, Comparator c), где Comparator c — экземпляр класса Comparator, который позволяет сравнивать два соседних элемента.

int[] myArray = new int[] < 6, 4, 3, 5 >; Arrays.sort( myArray ); System.out.println( Arrays.toString( myArray ) );

Методы для работы с массивами

Результат сортировки массива

Чтобы заполнить массив одинаковыми значениями и не писать цикл, воспользуйтесь методом Arrays.fill(a, val). Он присвоит всем элементам массива a значение val.

Можно заполнить не весь массив, а только какую-то его часть: Arrays.fill(a, from, to, val). Метод присвоит элементам массива a значение val, начиная с элемента с индексом from и заканчивая элементом с индексом to-1.

int[] myArray = new int[ 10 ]; Arrays.fill( myArray, 7 ); System.out.println( Arrays.toString( myArray ) );

Методы для работы с массивами

Результат заполнения массива значением 7

Стандартная библиотека Java предоставляет и другие методы работы. Изучайте их в документации класса Arrays.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *