Найти тему
Даниил Лаер

Курс по Java-разработке бесплатно(6 урок)

Оглавление

Цикл For - цикл со счётчиком


Тоже очень распространённый цикл, которым все пользуются. Является модификацией цикла
while. Давайте снова взглянем на код из предыдущей задачи:

public class A {
public static void main(String[] args) {
int i = 1;
while(i < 101) {
System.out.println(i++);
}
System.out.println("end");
}
}
Создание переменной, условие для неё и её увеличение (изменение) стали так часто встречаться, что было решено просто записывать их в одном месте. Общий вид записи цикла for:

for (<создание переменной>;<условие для неё>;<её изменение>){
<команды> }
<продолжение выполенения программы>
Давайте посмотрим на код этой же самой программы, только с использованием цикла
for:

public class A {
public static void main(String[] args) {
for(int i = 1; i < 101; i++) {
System.out.println(i);
}
System.out.println("end");
}
}

Циклы - неотъемлемая часть программирования, и мы познакомились с ними на предыдущем занятии. Но узнали мы про них далеко не всё. На этом уроке мы узнаем об очень важных ключевых словах - break и continue, об особенностях Java при работе с break, что такое флаги, а также продолжим изучать типовые задачи в программировании.

-2

break и continue

На самом деле с этими командами всё очень просто. Команда break мгновенно завершает любой из циклов:

for (int i = 0; i < 15; i++){
if (i == 9){
System.out.println("9 найдено");
break;
}
System.out.println("это число " + i);
}
System.out.println("конец программы");

А команда continue мгновенно завершает текущую итерацию:

for (int i = 0; i < 15; i++){
if (i == 9){
System.out.println("9 найдено");
continue;
}
System.out.println("это число " + i);
}
System.out.println("конец программы");
Если до этого момента мы изучали только необходимые конструкции, без которых нельзя обойтись, то эти же команды такими не являются. Можно написать любую программу и без них, но они могут упростить нам жизнь. Например
break поможет нам не делать лишних операций, а continue упростит фильтрацию.

Флаги

Представим, что перед нами стоит задача определить, есть ли среди чисел, введённых пользователем, число 0. И, если нет, вывести сообщение "NO", если же есть, то вывести "YES". На самом деле, если бы не было условия с "NO", то задача решалась бы очевидно так:

import java.util.Scanner;

class Example{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = 0; i < n; i++){
int a = sc.nextInt();
if (a == 0){
System.out.println("YES");
break;
}
}
}
}

Но когда же тогда выводить "NO"? Тут нам поможет понятие флага. Флаг в программировании - булевая переменная, отвечающая за ответ на какой-либо вопрос. В данном случае - есть ли 0? Как правило такие переменные называют очень понятным именем и чаще всего называют начиная с is. Вот, как решается эта задача:

import java.util.Scanner;

class Example{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
boolean is_0 = false;
for (int i = 0; i < n; i++){
int a = sc.nextInt();
if (a == 0){
is_0 = true;
break;
}
}
if (is_0)
System.out.println("YES");
else System.out.println("NO");
}
}

Свои вопросы можете задать в телеграмм-канале

https://tlgg.ru/@javaFreeWell

Курс по Java - разработке бесплатно(5 урок)

Курс по Java - разработке бесплатно(7 урок)