— Хочу дать тебе несколько примеров, что интересного можно делать с массивами:
Пример 1.
Заполнение массива из 10 чисел, числами от 1 до 10:
publicclassMainClass{publicstaticvoidmain(String[] args){int[] numbers =newint[10];for(int i =0; i < numbers.length; i++){
numbers[i]= i +1;}}}
Заполнение массива из 10 чисел, числами от 10 до 1:
publicclassMainClass{publicstaticvoidmain(String[] args){int[] numbers =newint[10];for(int i =0; i < numbers.length; i++){
numbers[i]=10- i;}}}
Заполнение массива из 10 чисел, числами от 0 до 9:
publicclassMainClass{publicstaticvoidmain(String[] args){int[] numbers =newint[10];for(int i =0; i < numbers.length; i++){
numbers[i]= i;}}}
Заполнение массива из 10 чисел, числами от 9 до 0:
publicclassMainClass{publicstaticvoidmain(String[] args){int[] numbers =newint[10];for(int i =0; i < numbers.length; i++){
numbers[i]=9- i;}}}
Пример 2.
Ввод 10 строк с клавиатуры
publicclassMainClass{publicstaticvoidmain(String[] args)throwsIOException{BufferedReader reader =newBufferedReader(newInputStreamReader(System.in));String[] list =newString[10];for(int i =0; i < list.length; i++){
list[i]= reader.readLine();}}}
Ввод 10 чисел с клавиатуры
publicclassMainClass{publicstaticvoidmain(String[] args)throwsIOException{BufferedReader reader =newBufferedReader(newInputStreamReader(System.in));int[] list =newint[10];for(int i =0; i < list.length; i++){String s = reader.readLine();
list[i]=Integer.parseInt(s);}}}
Пример 3.
Вывод массива на экран
publicclassMainClass{publicstaticvoidmain(String[] args)throwsIOException{int[] list =newint[10];//заполнение массиваfor(int i =0; i < list.length; i++){
list[i]= i;}//вывод на экранfor(int i =0; i < list.length; i++){System.out.println(list[i]);}}}
Пример 4.
Быстрая (статическая) инициализация. Сумма элементов массива:
publicclassMainClass{publicstaticvoidmain(String[] args)throwsIOException{//это статическая инициализацияint[] list ={5,6,7,8,1,2,5,-7,-9,2,0};//подсчёт суммы элементовint sum =0;for(int i =0; i < list.length; i++){
sum += list[i];}System.out.println("Sum is "+ sum);}}
Пример 5.
Поиск минимального элемента в массиве:
publicclassMainClass{publicstaticvoidmain(String[] args)throwsIOException{int[] list ={5,6,7,8,1,2,5,-7,-9,2,0};int min = list[0];for(int i =1; i < list.length; i++){if(list[i]< min){
min = list[i];}}System.out.println ("Min is "+ min);}}
Почему не проходит успешно проверку последнего задания -
"Массив должен быть выведен на экран в обратном порядке." ? в консоль выводится массив согласно условия в обратном порядке!!!!
Подскажите, пожалуйста… почему мы в упражнениях вводим данные через сложный bufferedReader, когда во всех видео они показывают через Scanner. Хотя в лекции говорилось, что сканером практически никто не пользуется 🫤
потому что при вводе данных через Buffered программа быстрее считввает эти данные чем со Scanner.
При написании большой программы с обьёмными файлами это даст фору в производительности чем в случае со Scanner.
Не сказать, что буффер труднее. Достаточно запомнить данную строку
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
А для ввода чисел писать не строку, а потом форматирование а сразу
int name = Integer.parseInt(reader.readLine())
И все)
Массив из чисел в обратном порядке.
Если кто-нибудь, еще раз объяснит, что мы делаем в этой задачи, буду очень благодарна, решила просто по примерам, решила правильно, а так ничего и не поняла.
Делала через Buffered и два цикла for. Решение выставлять не буду.
Что мы сделали в циклах? Особенно во втором? "-1" для чего пишем?
Пожалуйста, объясните, буду очень благодарна!
Добрый день.
Ну как я понял, методом проб и ошибок, что 1 цикл нам нужен, чтоб ты могли написать 10 чисел любых, мне кажется это ясно и понятно.
А вот насчет 2 цикла и почему мы делаем "-1", так как если поставить "+1", то выведется только последнее написанное цикло. Например я написал "1,2,3,4,5,6,7,8,9,10" и следующий цикл второй выведет лишь число 10, после чего последует ошибка "Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 10 out of bounds for length 10
at what.main(WhileTest.java:13)"
Так как мы вновь увеличиваем последовательность цисел, а не перебираем их наоборот, а как раз "-1" , дает нам обратный порядок наших написанных чисел.
Постарался объяснить, как сам понял логику своего решения.
это индекс, получается цикл начинает с первого значения которое хранится в массиве (5), присвоили 5 в min. а цикл уже начинается со второго элемента в массиве(6). получается если 6 меньше 5 то записываем 6 в min , но так как он больше то пропускаем и идем дальше и так до 4 элемента массива если считать с нуля то получается это (1) теперь у наc min=1 и так пока не пройдет весь цикл и в итоге он запишет в min -9. короче суть в том что цикл начинается не с 0, а int i = 1. надеюсь помог пытался максимально подробно)
Статическая реализация, это когда известна фиксированная размерность массива.
int[] array = new int[10];
одно и тоже статическое создание массива.
int[] array = {};
Динамическая это например ArrayList.
только у меня задачи, лекции и комментарии к ним, загружаются бессвязно?, в комментах читаю вопросы, люди приводят примеры из лекции, но в лекции нет таких примеров или вообще речь идет не о том....
Или же идут задачи, их решаешь, а дальше идут лекции на тему как решать эти задачи....
Тоже иногда на такое обращаю внимание - скорее всего курс переделывается и изменяется, и какие-то лекции/задания/примеры изменяются (убираются, меняются местами, редактируются).
Если вы обнаружили пробел в знаниях для решения задачи - быстренько загуглили информацию и решили. Это тоже навык, к которому нужно привыкать, потому что в одном источнике всегда немного не хватает. Ну а поскольку тут почти всегда происходит недостаток теории или остаются после нее вопросы - наверняка и рассчитано на скилл гугления)
p.s. Тоже по началу бесило дико, но уже все ок)
Так вроде же в самой-самой первой статье курса было сказано, что периодически специально задания будут идти перед лекцией. Это тоже тренирует определенный навык- сам пытаешься догадаться, разобраться.