Уроки Java с нуля / #8 - Массивы данных. Одномерные и многомерные массивы
HTML-код
- Опубликовано: 27 апр 2024
- Массивы позволяют хранить большой объем информации в одном месте. В языке Джава существуют одномерные и многомерные массивы данных. В ходе урока мы научимся создавать и взаимодействовать с различными массивами.
✅ Полезные ссылки:
- Урок на сайте itProger: itproger.com/course/java/8
⏰ Тайм коды:
00:00 - Начало
00:20 - Что такое массив?
01:00 - Создание массива
03:07 - Работа с массивом
06:50 - Установка значений при создании массива
08:20 - Циклы и массивы
12:04 - Практическое применение
19:41 - Многомерные массивы
28:20 - Заключительная часть
✔ Сообщество программистов: itproger.com/
✔ -------------
Вступай в группу Вк - prog_life 🚀
Инстаграм itProger: / itproger_official
Группа FaceBook - goo.gl/XW0aaP
Instagram: / gosha_dudar
Telegram: t.me/itProger_official
Twitter - / goshadudar
- Уроки от #itProger 👨🏼💻
- Все уроки по хештегу #itprogerLessons
Надеюсь у вас будут очень много уроков, смотрю каждый новый урок, каждый день жду с нетерпением)👍
Спасибо большое, слушаю с удовольствием, грамотно, доносятся все нюансы и мелочи, в отличие от других блогеров
Очень полезный канал, прям каждый шаг объясняешь, это очень важно для новичка. Спасибо ОГРОМНОЕ тебе.
Спасибо огромнейшее за очередной классный урок!
Всё чётко и подробно. Лайк
большое, ОГРОМНОЕ спасибо Вам за такое шикарное обьяснение!!!
Круто объясняешь!👍
Супер огромное спасибо!
15:57 (время где остановился) Спасибо за урок!!!!! так понятно!!!!
Благодарю за очередную порцию информации)
Спасибо большое, объяснение супер!!!
Подача информации прелестная)
Кайофово, начинаю путь в it через эти обучения.
Красавцы)
хы
Спасибо большое
Спасибо. Мало по малому, до что-то разработаем :D
Спасибо за прелестную информацию, конечно тяжко каждый день новую информацию запоминать, но я стараюсь 60/40% обучаться, 60% практика, 40% теория.
Ну и как успехи?
Спасибо за понятное обьяснение всего, а то иногда смотришь подобные ролики, а там рассказывают так, будто я уже годы этим занимался и решил ролик по приколу глянуть
Про заполнение с консоли двумерных массивов не рассказал, хотя сложноватая тема для осознания, оставлю код, надеюсь кому то поможет.
Scanner scanner = new Scanner(System.in);
System.out.print("Ввод кол-ва строк: ");
int str = scanner.nextInt();
System.out.print("Ввод кол-ва чисел в строках: ");
int num = scanner.nextInt();
int[ ][ ] nums = new int[str][num];
for (int i = 0; i
спасибо большое. после видоса сижу и туплю. и правда упущение автора
Спасибо большое! Сам забыл как в институте учили и автор упустил эту тему...
прям как в плюсах
концовка топ!
Кто начинал знакомство с программированием с Бейсика Джава пойдет на ура!!Практически те же команды -принт инпут фор иф структура циклов алгоритм да нет иначе вот работа с массивом новое
Изучал С++, знаю хорошо синтаксис и базу, а с этим курсом вообще пару видосов глянул, потому что это знаю) хороший материал, спасибо
Спасибо за уроки очень классные.
У меня вопрос там при поиске меньшего числа в массиве мы ведь ищем не наименьшее число из массива а исходя из введённого кода число из массива меньшее чем первое, а наименьшее будет искаться как то по другому?
В цикле, если мы найдем число меньше первого, оно станет наименьшим. И так далее в цикле. То есть, при каждой итерации число минимум перезаписывается при нахождении меньшего числа
Можно пример цикла for в многомерном массиве
а если массив должен заполниться на нное кол-во элементов? то это array
объясните пожалуйста почему в двухмерном массиве указаны три строки?
двухмерный массив: 3 строки, 2 столбца. Двухмерный это означает что есть высота и ширина. (3 это высота)
😎
Подскажите как вывести в терминал двумерный массив в виде матрицы? В строку получается, в столбец тоже, но сделать разделение на строки и столбцы одновременно не могу
был пример заполнения 2-мерного массива
типа
byte nums [ ] [ ] =new byte [ ] [ ] {
{5, 7},
{7, 3},
{2, 0}
};
вопрос: как выглядит по аналогии заполненеие 3х мерного таким же образом без циклов и промежуточных переменных?
вот так?
byte nums [ ] [ ] [ ] =new byte [ ] [ ] [ ] {
{
{5, 7},
{7, 3},
{2, 0}
},
{6, 4},
{9, 13},
{12, 5}
}
};
спасибо заранее
честно говоря, по многомерным массивам слабое объяснение, визуализация в виде таблицы здорово бы помогла
впервые зашел в комменты, что бы написать тоже самое. первая тема для меня со сложной подачей😢
19:00
как вы познакомились с программированием ? Какой был ваш первый проект ? И по началу сложно было ?и за сколько времени можно стать веб разработчиком если учится по вашим урокам ,в смысле как надо распределять уроки 1 урок в день или 1 урок в 2 дня , и сколько часов в день надо заниматься программированием
понимаю, большинство вопросов тупые , но просто надоело , 3 месяца изучал программирование изучал изучал и потом понял что я ничего не изучал ( не знаю как это вышло ) , просто смотрю на пустое поле и не понимаю что писать
Обычно програмирование это хобби, я лично занимаюсь всем свободным временем за ноутбуком в изучении нового. Нужно любить и жить в програмировании, чтобы эго понять или изучить.
@@codessite спасибо,капелька мотивации уже есть, я пошел программировать )
Чо та опять не выходит 🙄
@@user-zr8ib4ib9u что изучаешь?
В цикле по поиску минимального значения, переменной i оптимальнее будет присвоить значение 1 , т.к. [0] элемент массива уже записан в переменную min.
16:00
Здравствуйте, а как мы цифре 3 присвоили значение 67? (в 27:02)
перед строкой вывода внизу у него nums[1][1] = 67. А вот зачем это сделали, я не понял)
@@Ssanian Для того что б показать, что при присвоению нового значения код скомпилируется уже по новому, ну это я так понял)
Значення 67 присвоїли не цифрі 3, а елементу nums під індексом [1][1]
Подскажите пожалуйста, почему выводит последнее значение массива, хотя оно иногда самое большое
Понятное дело, ты написал не правильно.
тайминг 11:21 19 и 20 строчка кода кода звучит: for (int i = 0; i < nums2.length; i++)
System.out.println("Element: " + nums2[i]);
не понятно как выполняется условие, при котором цикл остановится? ведь он бeдет работать пока "i" меньше значения "num2". а у нас "i" увеличивается на 1 все время. или есть еще условие что цикл останавливается, когда закончатся значения? вы об этом не сказали, а мне логику работы компилятора трудно понять) на уроке про циклы вы сказали, что так цикл будет выполняться бесконечно) если будет противоречить условию.
nums.length чему равно? 3!
Ну вот и подставляй! и будет пока i < 3
не "num2" а "nums2". И он будет работать пока "i" меньше -значения- *ДЛИНЫ* "nums2"
Может кто знает, где задачки брать для закрепа материала?
На их сайте itproger есть практические задачи, но их мало, какие то слабые и другие решения не принимают, но там можно посмотреть ответ на задачу
Автор прошу заметь!!
Значит в массиве byte
Розмерность будет byte[3][2]
???
Чт.. Нееет!
когда-то учил паскаль, бэйсик. все тоже самое. только синтаксис отличается. уроки нравятся- без воды. Спасибо!
у меня вопрос по практическому заданию....
если в массиве будет два числа меньше заданного, то что он выведет?
Здравствуйте, цикл перебирает все значения массива и если следующий элемент меньше заданного то теперь он будет считаться минимальным. Если же несколько следующих чисел одинаково минимальны, то будет выведено первое минимальное число, т.к следующее не будет подходит под условие
почему точно такая же программа выводит иной результат? На вывод идет первое число и удвоенное минимальное
int min = abv[0];
for(int a = 0; a < abv.length; a++){
if(abv[a] < min)
min = abv[a];
System.out.print(min);
}
}
}
У вас System.out.print(min); знаходиться в середині циклу for. Тіло циклу for знаходиться між двома фігурними дужками. Просто видаліть System.out.print(min); з тіла циклу for і помістіть System.out.print(min); під дужкою і після того як цикл for завершиться виконається команда System.out.print(min);
int min = abv[0];
for(int a = 0; a < abv.length; a++){
if(abv[a] < min)
min = abv[a];
}
System.out.print(min);
}
}
loop for two dimensional array
int[][] nums = new int [][]{
{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
};
for(int i = 0; i < nums.length; i++) {
for (int n = 0; n < nums.length; n++) {
System.out.println(nums[i][n]);
}
}
Немного неверно: если у тебя будет
{1,2},
{3,4},
{5,6}
то будет выдавать ошибку. Чтобы исправить, нужно ещё указывать длину второго массива:
for (int i = 0; i < nums.length; i++){
for (int n = 0; n < nums[i].length; n++){
System.out.println(nums[i][n]);
}
}
За место: nums.length
сделать: nums[i].length
Хотелось бы добавить. Вы упомянули, что вложенные массивы должны быть одинаковой размерности... А как же зубчатые массивы? Такой код без ошибок скомпилируется:
int[][] array = {
{1, 2},
{1, 2, 3},
{1, 2, 3, 4}
};
все так. только с таким массивом невозможно работать с простыми вложенными циклами. нужно использовать класс java.util.Arrays; что видимо выходит за рамки курса ))
хотя нет, можно и с циклами заморочиться
for (int i = 0; i< nums.length; i++)
for (int j: nums[i])
System.out.print(j);
а как узнать длину многомерного массива? использую функцию length, но она возвращает одно значение, а как получить второе. Например что ты найти минимальное значение нужно же по двум переменным перебирать.?
для прямоугольно массива количество столбцов вот так nums[0].length
@@user-ht3jw5gc7x когда сам полез делать интерации и допер до этого уже только через stackoverflow x)
А как эти массивы можно пихнуть в калькулятор?
Ебусь с двумерными массивами уже долго, и кажется понял 26:06, если записать нижний 2-й массив, в виде как было сверху то это будет выглядит так: char [][] syms = new char [3][2]? Если нет то я пошел резать вены на пятой точке
Поздно отвечаю, но все же: да, ты абсолютно прав.
Может я не правельно понимаю но если мы берём min за предположительный первый елемент масива и ваодим его к примеру 9 а второе значение 5 третее к примеру 4 но ведь оно остановиться именно на 5 потомучто первый елемент был больше второго но при том минум оно не найдет
Так как это цикл, то компилятор остановится только когда закончится цикл (пока не введутся все 4 числа в нашем случае ). То есть, он всегда будет сравнивать последнее введенное число с минимальным который мы задали, если это число меньше значит оно становится минимальным. Например: элемент [0] = 9; предположим что это минимальное число. Вводим 4 (4
а как вывести все значения массива?
через цикл, как ещё
1
for(int i = 0; i < 4; i++);{
System.out.print("Поле ввода: ");
int value = scanner.nextInt();
arr[i] = value;
}
все вродь как надо, но ошибка
Cannot resolve symbol 'i'
Точка с запятой лишняя перед фигурной скобкой тела цикла
так же ошибся и сидел не мог понять в чем дело
я тоже в этом месте затупила, вы не одиноки =)
Да ,многомерные массивы уже тяжело в восприятии и понимании 😢
Было бы удобно если в описании к ролику сразу программный код скидывали.
удобно, но не практично лично для Вас.
Чем удобно то?
Вопрос для чего нужен массивы циклы вроде все показывает ел для чего нужен ?
А где ты будешь хранить список пользователей? Правильно в массиве
User[] userList = new User...
25:40 - тут автор не правильно говорит. Количество элементов может быть сколько угодно. А автор говорит, что они одинаковыми должны быть.
очень жаль , что не разобрали как делать циклы для многомерных массивов в самом конце. У меня так и не получилось прогнать циклы.
for (int i = 0; i< nums.length; i++)
for (int j = 0; j < nums[0].length; j++)
System.out.print(nums[i][j]);
второй вариант
for (int i = 0; i< nums.length; i++)
for (int j: nums[i])
System.out.print(j);
@@user-ht3jw5gc7xспасибо тебе большое
слово Тобиш или топиш, уже через чурь
Не пойму, когда обращаюсь к массиву arr [i] = value; "подсвечивает i красным цветом и выдает ошибку. Код в точности как на видео. Кто шарит почему так?
может быть типо потому что ты ну скобки короче перепутал там же автор говорил что надо в другой части кода это писать
import java.sql.SQLOutput;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int[] arr = new int[4];
Scanner scan = new Scanner(System.in);
for (int i = 0; i < arr.length; i++ ) {
System.out.print("Введите число: ");
int value = scan.nextInt();
arr[i]= value;
}
for(int i = 0; i < arr.length; i++){
}
}
}
25:20, почему 3 массива, если ты потом сказал что это двумерный массив
17:39 вообще не понял
a
Пов: массив в массиве
Как число 67 получилось ?
оно никак не получилось, просто мы задали массиву рандомное, целое число
Я не понимаю я тупая и не когда не научусь и не буду програмистом😢
Нет, я раньше тоже не очень понимал
ше тихіше можеш говорити?
for (int i = 0; i < a.length; i++) {
System.out.println("Vvedi znachenie: ");
a[i] = sc.nextInt(); // То чувство когда сделал это проще, самостоятельно(до просмотра практического применения)
тщательно просматриваю все задания, пересматривая раз за разом, пока не пойму точно, как это работает.
Это лишь значит что ты тот человек у которого мало развит понимание новой информации, или же тебе не понятен этот человек
@@Creamorf есть некоторые проблемы с концентрацией внимания. А так я уже смотрю третьего по счету программиста, selfedu, отлично объясняет, и более углубленно. На этом канале в некоторых уроках корявый код с повторением строк
@@raven_n7413 тут повторение строк, так как это смотрят новички. Им не нужен навороченный код, ведь они ничего не поймут
На рахунок коду із найменшим числом, то це повна туфта. Це іде порівняння із першим елементом масиву, просто у Вас цифри співпали і показало "працюючий" код
if (nums3[0] < nums3[1] && nums3[0] < nums3[2]){
System.out.println("Найменше число: " + nums3[0]);
}else if (nums3[1] < nums3[0] && nums3[1] < nums3[2]) {
System.out.println("Найменше число: " + nums3[1]);
}else if (nums3[2] < nums3[0] && nums3[2] < nums3[1]){
System.out.println("Найменше число: " + nums3[2]);
}
У мене підставлені інші зміні, та всього 3 елементи в масиві
Зайшов з другого акаунту, бо хотілось відповісти одному з дописувачів. Написав відповідь з приміром коду і все одно вона видалилася. У мене запитання, - нащо цей канал потрібен, якщо тут не можна спілкуватись з дописувачами? Ще один дизлайк
Возможно ты использовал мат или ссылку. Такое ютуб без проблем и совести сам удаляет
Ну що це таке? Чому тут не можна коментар написати? Весь час видаляються. Ну реально. Дістало не на жарт. Взагалі нічого не можна написати. Дизлайк. Шкода, що не можна цих дизів більше одного понаставляти😡😈👿 !!!!
Всем привет. Пайтон и питон одно и тоже . Нужно все тексты (коды и тд ....) всех языков программирования переделать под пайтон. Языков программирования очень много и многие эти языки не понимают друг друга. Это полный пиз дец. Нужно обучать всех новичков в питон языку. Зачем создавать новые языки? Зачем усложнять себе жизнь? Нужно следующее обновление Пайтона чтобы он понимал другие языки программирования. Чем меньше языков программирования тем проще, удобнее и приятнее писать коды и читать их. Всем нужно начать изучать лишь 1 язык программирования. Да это будет неудобно, сложно и тяжело но оно того стоит. Нужно сам пайтон писать на языке пайтон. Нужно Пайтон улучшать чтобы он мог выполнять все то что умеет делать другие языки. Хватит быть крабом ведре. Отпустите других крабов. 1 и тоже можно делать на разных языках так зачем изучать другие языки? Проще от них отказаться. Это как отказаться от разных видов разъёмов для 1 вида разъёма. И имя ему тайпси. Люди до сих пор используют мини юсб, микро юсб, лайтнинг, тонкая нокия, толстая нокия, микро HDML ..... Все люди перешли на тайпси провод и разъём но некоторые все ещё создают лайтнинг ))))))).
Брат, то что язык проще в написании и в чтении, ещё не значит что он лучше. Разные языки, роботают с разной скоростью, и пайтон(и да, правильно говорить через "а" пАйтон) по сравнению с тем же джава, в 8 раз медленее его. Также нужно знать, что каждый язык, в чем то лучше, а в чем то хуже.
@@user-wp5wg7io3c а какой язык самый быстрый? Благодарю за комментарий )))))
@@Sultan69996 C или C++, но могу и ошибаться.
Да ты блин видел многоядерность в пайтоне? В C# к примеру это делается 2-3 строки. А в пайтоне с этим GIL вообще ужас
Python головного мозга
System.out.println("Респект братан! лучший курс по Java!");