Java for command syntax
Почему-то не проходит «Программа должна выводить таблицу умножения 10х10.» это условие. public class Solution < public static void main(String[] args) < for(int i = 1; i <= 10; i++)< System.out.println(); for(int j = 1;j <= 10; j++)< System.out.print(i * j + " "); >> > > код выводит правильно. Выше прочитал, что добавляется еще пробел в конце каждой строчки, но не особо понял на этот счет.=>
Я могу ошибаться, но у while и for есть отличие, которое заключается в видимости переменной. У while переменная находится вне тела цикла (метода), а значит может быть переиспользована в других методах класса, в цикле for переменная заключена в сам метод и становится невидимой в других методах цикла.
Долго я допирал в этот раз как именно квадрат построить! Если будут вопросы, то обязательно задавайте, буду объяснять — ибо самый лучший способ полностью понять тему — надо ее объяснять!
Зачем сюда выкладывают готовые решения? Я теперь всегда боюсь читать чат, пока все задачи не решу. Так еще и + ставят под готовыми решениями ну или почти готовыми всегда по разному.
for(int i = 1;i <=10;i++)< for(int a = 1;a<=10;a++)< System.out.print(a * i + " "); >System.out.println(); >
Минут 20 думал, были сложные, кривые решения, остановился на этом. Да, оно, может, тоже кривое, но работает и выглядит аккуратно, на мой взгляд) Прикольная задача. P.S. После коммента посмотрел правильное решение, стало так тепло на душе😄
int q; int w = 1; while (w <=10) < for (q = 1; q <= 10; q++) < System.out.print(q * w + " "); >w++; System.out.println(); >
for (boolean isExit = false; !isExit; )
boolean isExit = false; while (!isExit)
JavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Этот веб-сайт использует данные cookie, чтобы настроить персонально под вас работу сервиса. Используя веб-сайт, вы даете согласие на применение данных cookie. Больше подробностей — в нашем Пользовательском соглашении.
Цикл For в Java
Говорят, что лучший программист — ленивый программист. Вместо того, чтобы совершать однотипные действия по нескольку раз, он придумает алгоритм, который сделает эту работу за него. А еще он сделает его хорошо, чтобы не нужно было переделывать. Примерно так, чтобы много раз не писать один и тот же код, придумали циклы. Представим, что нам нужно вывести в консоль числа от 0 до 99. Код без цикла:
System.out.println(0); System.out.println(1); System.out.println(2); System.out.println(3); System.out.println(4); System.out.println(5); // И так далее
Что такое циклы for?
- Приготовить стакан.
- Открыть крышку.
- Получить 1 каплю.
- Получить 2 каплю. …
- Получить 30 каплю.
- Закрыть лекарство.
- Принять полученную порцию.
- Приготовить стакан.
- Открыть крышку капель.
- Получить 30 капель.
- Закрыть лекарство.
- Принять полученную порцию.
Принцип работы цикла for
for(; ; ) < // Тело цикла >Пример перебора цифр от 0 до 5 и вывод каждой в консоль: for(int i = 0; i
Если перевести данную запись на человеческий язык, получится следующее: “Создай переменную i с начальным значением 0, пока она не достигнет 5, прибавляй к ней по 1 и на каждом шаге записывай значение i в консоль.” В основе работы цикла for в Java лежат три стадии, их можно изобразить следующей схемой: Условие выхода из цикла — это булево выражение. Если оно ложно, цикл будет завершен. В примере выше переменная i увеличивается на 1. Если ее значение менее 5, цикл продолжается. Но как только i станет больше или равно 5, цикл прекратится. Оператор счетчика — выражение, которое выполняет преобразование переменной счетчика. В примере выше переменная i увеличивалась на 1. То есть цикл будет выполнен ровно 5 раз. Если оператор счетчика будет прибавлять по 2 к переменной i , результат будет иным:
Также можно умножать переменную, делить, возводить в степень, в общем, делать все, что угодно. Главное, чтобы в результате преобразования получилось число. Тело цикла — любой код, который может быть выполнен. В примере выше в теле цикла был вывод значения переменной i в консоль, однако содержимое данного тела ограничено задачей и фантазией. Обобщая всю схему, принцип данного цикла — for — следующий: код, который находится в теле цикла, будет выполнен столько раз, сколько преобразований выполнит оператор счетчика до того, как будет достигнуто условие выхода из цикла. Если задать условие выхода из цикла как true :
for(int i = 0; true; i++) < if(i % 1000000 == 0) System.out.println(i); >System.out.println("Loop ended");
То код после цикла будет помечен ошибкой unreachable statement , так как никогда не будет исполнен. Задача на смекалку: в результате запуска кода ниже будет ли выведено в консоль “ Loop ended ” или цикл будет выполняться бесконечно?
for(int i = 0; i > -1; i++) < if(i % 1000000 == 0) System.out.println(i); >System.out.println("Loop ended");
Ответ: будет. Переменная i рано или поздно достигнет максимального значения, а дальнейшее увеличение превратит ее в максимальное отрицательное, в результате чего условие выхода будет выполнено (i < = -1).
Цикл forEach
При работе с циклами иногда приходится перебирать массивы или коллекции. Обычно массив можно перебрать с помощью цикла for:
public void printAllElements(String[] stringArray) < for(int i = 0; i < stringArray.length; i++) < System.out.println(stringArray[i]); >>
И это правильно. Однако, для перебора всех элементов массива по очереди придумали конструкцию forEach. Ее сигнатура следующая:
public void printAllElements(String[] stringArray) < for(String s : stringArray) < System.out.println(s); >>
Тоже кратко и лаконично. Самое главное, нет нужды думать о счетчике и об условии выхода, все уже сделано за нас.
Как используются циклы for
А теперь рассмотрим несколько примеров использование цикла for в Java для решения разнообразных задач.
Обратный цикл (от большего к меньшему)
Несколько переменных и увеличение счетчика в теле цикла
В цикле for можно использовать несколько переменных, например их можно преобразовывать в операторе счетчика:
int a = 0; for(int i = 5; i > 0; i--, a++)
Шаг: 0 Значение: 5 Шаг: 1 Значение: 4 Шаг: 2 Значение: 3 Шаг: 3 Значение: 2 Шаг: 4 Значение: 1
for(int i = 5, j = 11; i != j; i++, j--)
i: 5 j: 11 i: 6 j: 10 i: 7 j: 9
Вряд ли это действие имеет какую-либо ценность, но знать о такой возможности полезно. В цикле for также можно создавать внутренние циклы. В этом случае количество шагов цикла будет умножаться:
for(int i = 0; i < 5; i++) < System.out.print(i + " | "); for(int j = 0; j < 5; j++) < System.out.print(j + " "); >System.out.print('\n'); >
0 | 0 1 2 3 4 1 | 0 1 2 3 4 2 | 0 1 2 3 4 3 | 0 1 2 3 4 4 | 0 1 2 3 4
В цикле со счетчиком j есть возможность обращаться к счетчику внешнего цикла. Благодаря этому вложенные циклы — идеальный способ обхода двумерного, трехмерного и прочих массивов:
int[][] array = < , , , >; for(int i = 0; i < array.length; i++) < for(int j = 0; j < array[i].length; j++) < System.out.print(array[i][j] + " "); >System.out.print('\n'); >
0 1 2 3 4 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7
Досрочное завершение цикла
Если при обработке цикла нужно его прервать, используйте оператор break , который останавливает работу текущего тела цикла. Все последующие итерации также пропускаются:
public void getFirstPosition(String[] stringArray, String element) < for (int i = 0; i < stringArray.length; i++) < if(stringArray[i].equals(element)) < System.out.println(i); break; >> >
String[] array = ; getFirstPosition(array, "two");
Бесконечный цикл
Еще один способ создать бесконечный цикл for — оставить пустой область объявления счетчика, условие выхода и оператор счетчика:
Но учти, что в большинстве случаев бесконечный цикл — свидетельство логической ошибки. У такого цикла обязательно должно быть условие выхода.