#5. Вводный курс по JAVA. Циклы (Loops)

<<Предыдущий урок   Список уроков   Следующий урок>>

Уроки удобно выполнять в среде разработки IntelliJ IDEA, ссылка на страницу загрузки.

Циклы в Java

Есть два вида циклов в Java, for и while.

For

Цикл for состоит из трех секций:

for (int i = 0; i < 3; i++) {}

Первая секция выполняется один раз, когда мы входим в цикл.  В нашем примере здесь задается начальное значение переменной i. Вторая секция проверяет логическое условие, если оно возвращает true, выполняются операторы в цикле, если false, выход из цикла. Вторая секция в первый раз запускается сразу после первой секции, и выполняется каждый раз, пока условие верно, вызывая третью секцию. Третья секция – заключительный оператор, его действие выполняется каждый раз при выполнении цикла. В нашем примере это инкремент, который при каждом выполнении увеличивает значение переменной на единицу.

Таким образом, цикл будет работать 3 раза. Вот порядок команд:

int i = 0;
i < 3 // 0 < 3 = true
      // Inside of loop
i++ // i is now 1
i < 3 // 1 < 3 = true
      // Inside of loop
i++ // i is now 2
i < 3 // 2 < 3 = true
      // Inside of loop
i++ // i is now 3
i < 3 // 3 < 3 = false
      // Loop is done...

Мы можем опустить первую и третью секции цикла (как бы странно это ни выглядело), и цикл все еще будет работать:

for (;i < 5;) {}

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

While

Синтаксис похож на предыдущий:

while (condition) {}

Условие будет работать впервые при вводе и каждый раз, когда вызывается цикл. Если условие возвратит false, то цикл не будет работать.
Если мы хотим, чтобы цикл всегда выполнял по крайней мере одно действие, мы можем использовать do-while:

do {

} while(condition);

Не забудьте точку с запятой в конце.

Foreach

Другая версия for, это foreach. Но в Java решили не добавлять новое ключевое слово each. Ключевое слово, которое мы используем, все еще for, но когда мы хотим выполнить действия над элементами массива, делаем так:

int[] arr = {2, 0, 1, 3};
for (int el : arr) {
    System.out.println(el);
}

Это была короткая версия, эквивалентная следующей записи:

int[] arr = {1, 9, 9, 5};
for (int i = 0; i < arr.length; i++) {
    int el = arr[i];
    System.out.println(el);
}

Заметьте, что, если вы хотите использовать индекс элемента в цикле, Вы должны использовать более длинную версию и не можете использовать foreach.

break and continue

Эти два ключевых слова помогают нам управлять циклом из него. Оператор break останавливает цикл и переходит к оператору, следующему за ним:

int i;
for (i = 0; i < 5; i++) {
    if (i >= 2) {
        break;
    }
    System.out.println("Yuhu");
}
System.out.println(i);
// Output:
// Yuhu
// Yuhu
// 2

Оператор continue остановит текущую итерацию и переместится в следующую. Заметьте, что в цикле for действие в третьей секции будет выполнено при этом.

int i;
for (i = 0; i < 5; i++) {
    if (i >= 3) {
        break;
    }
    System.out.println("Yuhu");
    if (i >= 1) {
        continue;
    }
    System.out.println("Tata");
}
System.out.println(i);
// Output
// Yuhu
// Tata
// Yuhu
// Yuhu
// 3

Упражнение

Используя цикл, выведите на экран все четные числа из списка чисел в порядке получения. Не выводите числа, идущие после числа 237 в последовательности.

Выполните упражнение, прежде чем перейти к следующему уроку.

Дополнительное чтение:

Общие сведения о циклах в Java

Конструкции выбора в Java

Инструкции выхода в Java

<<Предыдущий урок   Список уроков   Следующий урок>>

Коментарі: 51
  1. andrey19910
    andrey19910

    package com.company;

    public class Main {

    public static void main(String[] args) {

    int i;
    for (i = 0; i <= 237; i =i+2) {
    System.out.println(i);
    }
    }
    }

  2. kfedorov
    kfedorov

    public class forTest {
    public static void main(String[] args) {
    int i = 1;
    while (i <= 237) {
    if (i % 2 == 0) {
    System.out.print(i + ", ");
    }
    i++;
    }
    }
    }

    Вначале мы инициализируем переменную i и говорим, что начальное значение ее равняется 1. Затем создаем цикл while и говорим, что i будет максимум 237.
    Затем создаем условие, если i деленное по модулю на 2 равняется 0, то выводим i;
    И когда условие удовлетворяется, i увеличивается каждый раз на 1.

  3. kfedorov
    kfedorov

    public class forTest {
    public static void main(String[] args) {
    for (int i = 1; i <= 237; i++) {
    if (i%2==0) {
    System.out.print(i + ", ");
    }
    }
    }
    }

    Задаем границы цикла (переборки). От 1 до 237 включительно, поэтому написал < и =. Если бы оставил меньше, то цикл не включал число 237.
    Затем задал условие выводы цикла. Если i деленное по модулю на 2 равняется 0, то выводить это число. Почему деленное по модулю? Потому что проходя математику мы знаем, что четные числа делятся на 2 без остатка. Поэтому и создается условие, если число i делится на 2 без остатка.
    Почему я написал System.out.print, а не System.out.println, потому что без ln, это в одну строчку. Затем я добавил запятую.

  4. tester
    tester

    public class Main {
    public static void main(String[] args) {
    int[] arr = new int[237];
    for (int i = 0; i<=arr.length-1;i++){
    arr[i] = i;
    if (arr[i]%2 == 0 && arr[i] != 0)
    System.out.println(arr[i]);
    }
    }
    }

  5. Nastya 1909
    Nastya 1909

    public class Main {
    public static void main(String[] args) {

    for (int i = 0; i < 257; i++) {

    if (i % 2==1)
    continue;
    System.out.println(i + " ");
    }
    }}

  6. Nastya 1909
    Nastya 1909

    public class Main {
    public static void main(String[] args) {

    for (int s = 0; s < 800; s++){
    if (s==119) break;

    System.out.println((s*2) + " This is mean" );
    }

    }} //моя версия как ни странно все работает)))

  7. Alexandra_96
    Alexandra_96

    Если кто может, оцените пожалуйста.

    1 способ:
    public class Exercise {
    public static void main(String[] args) {
    int arr = [1, 2, 3, 19, 44, 30, 290, 1000000, 54, 0, 60, 61, 78, 20, 106, 237, 500, 611, 90, 19, 1];
    for (; i<arr.length;) {
    while (arr[i] != 237) {
    if (arr[i]%2==0) System.out.print(arr[i]);
    }
    }
    }
    }

    2 способ:
    public class Exercise {
    public static void main(String[] args) {
    int arr = [1, 2, 3, 19, 44, 30, 290, 1000000, 54, 0, 60, 61, 78, 20, 106, 237, 500, 611, 90, 19, 1];
    for (; i<arr.length;) {
    if (arr[i]==237) {
    break;
    }
    if (arr[i]%2==1) {
    continue;
    }
    System.out.println (arr[i];
    }
    }
    }

  8. Darvin3310
    Darvin3310

    import com.sun.org.apache.xpath.internal.SourceTree;

    import java.util.Arrays;

    public class MyJavaClass {
    public static void main (String[] args) {
    for (int i = 0; i <= 237; i++) {
    if (i%2 == 0) {
    continue;
    }
    System.out.println(i);
    }
    }
    }

  9. Александр Юшко
    Kreeck

    Учитывая пройденные 5 уроков для меня, как новичка, можно написать только следующее:
    public class main {
    public static void main (String [] args) {
    int i;
    for (i = 2; i <= 237; i = i+2);
    System.out.println(i);
    }
    }
    Вывод: 2,4,6,…,236

  10. public class Main {
    public static void main(String[] args) {

    for (int i = 0; i =237){
    break;
    }
    System.out.println(i);}
    }
    }
    }

  11. M1KaDo
    M1KaDo

    class Sayit {
    public static void main(String[] args) {

    for (int i = 1;i <= 118; i++){
    int number = 2*i;
    System.out.println(number);
    }

    }
    }

  12. int i;
    int b = 0;
    for (i = 0; i < 237; i++) {
    if (i == b){
    b=i+2;
    System.out.println(i);
    }

    }

    }

  13. Andrei

    public class Program
    {
    public static void main(String[] args)
    {
    for(int i = 0;i <=237;i+=1){
    i++;
    System.out.println(i);
    }
    }

    }

  14. Ramil

    public class Main {
    public static void main(String[] args) {
    for(int i=1;i<=237;i++) {
    if(i%2==0){
    System.out.println(i);
    }
    }
    }
    }

  15. Aleksandr
    ArrayList evenNumbers =new ArrayList();
    		for(int i =0; i<1000; i++){
    			if(i>237) break;
    			if( i%2==0 ) { evenNumbers.add(i);}
    			}
    		System.out.println("between 0 and 237 totaly " +evenNumbers.size()+ " even numbers.");
            System.out.println("there are: " +evenNumbers);	
  16. Aleksandr

    ArrayList evenNumbers =new ArrayList();
    for(int i =0; i237) break;
    if( i%2==0 ) { evenNumbers.add(i);}
    }
    System.out.println(“between 0 and 237 totaly ” +evenNumbers.size()+ ” even numbers.”);
    System.out.println(“there are: ” +evenNumbers);

  17. Nik

    не прокатил…….ну значит – мои примеры НЕ ВЕРНЫ……:))

    1. Виталий Непочатов
      admin (автор)

      Для вставки кода используйте кнопку “crayon”

  18. Nik


    public class celie {
    public static void main(String[] args){
    for(int i=0; i1)System.out.println(i);
    }//if можно убрать, но начнёт печать с 0
    }

    Последний посыл, если не прокатит…….да и фиг с ним :)))

  19. Nik

    public class celie {
    public static void main(String[] args){
    for(int i=0; i1)System.out.println(i);
    }//if можно убрать, но начнёт печать с 0
    }
    Почему то, в предыдущем посте, сьел половину кода………

  20. Nik

    public class celie {
    public static void main(String[] args){
    for(int i=0; i1)System.out.println(i);
    }// if можно убрать, но начнёт печать с 0
    }

  21. Шерзод

    вот правильный вариант :
    public class Main {
    public static void main(String[] args) {

    int i;
    for(i=0; i<300; i++){
    if(i<=237) {
    i++;
    System.out.println(i + 1);
    }
    if(i<=237){
    continue;
    }
    System.out.println(i);
    }
    }
    }

  22. Владимир

    как вариант
    public class Main {
    public static void main(String[] args) {
    for ( int i = 0; 2 * i < 273; i++) {
    System.out.println(2 * i); // 2 * i – математическая формула для четных чисел
    }
    }
    }

  23. Александр

    public class Main {
    public static void main(String[] args) {

    // Спосооб 1//
    int i;
    for (i = 1; i < 1000; i++) {
    if (i % 2 == 0 && i < 273) //Выводит четные числа меньше 273 с помощью логического оператора "И"//
    System.out.println(i);
    }
    System.out.println("Vozmi s polki chokoladky");

    // Способ 2//
    int x;
    for (x = 1; x < 1000; x++) {
    if (x == 273) { //Выводит числа меньше 273, когда "x" становится = 273, оператор прекращает работу//
    break;
    }
    if (x%2 == 1){ //Не четные числа пропускает, выводит на экран четные//
    continue;
    }System.out.println(x);
    }
    System.out.println("Vozmi eche odnu");
    }
    }

  24. RUSLBOSS


    for ( int i = 0; i < 300; i = i+2) { /*чтоб выводить нечетные числа ( int i = 1; i 237) { /*условие не даст вывести числа больше 237*/
    break;
    }
    System.out.println(i);
    }

  25. J2a

    Пришлось немного подумать, затруднения вызвали путаница с double.

    public class Program
    {
    public static void main(String[] args) {
    double w;
    for(int i = 1;i <= 237;i++){
    w = i % 2;
    if(w != 0)
    continue;
    else
    System.out.print(i + " ");
    }
    }
    }

  26. Sanko

    public class homework {
    public static void main(String[] args) {
    int i ;
    for ( i=0 ; i=2) {
    System.out.println(i);
    }
    }

    }
    }

  27. Дмитрий

    int i;
    for(i = 0; i < 235; i = i + 2)
    System.out.println(i + 2);

  28. for(int i = 0; i < 300; i++) {
    int a = i % 2;
    if(i == 237){
    break;
    }
    if(a == 0) {
    System.out.println(i);
    }
    if(a != 0) {
    System.out.println("");
    }
    }
    }

  29. public class java4 {

    public static void main (String [] agrs){

    int i;
    for (i = 0; i = 237) {
    break;
    }
    System.out.println (i*2);

    }

    }
    }

  30. public class main {

    public static void main(String[] args) {
    int i;
    for (i = 0; i = 236){
    break;
    }
    System.out.println(i);
    }
    System.out.println(i);
    }
    }

  31. Через while:
    int i=0;
    while (i<238){
    if(i%2==0) {
    System.out.println(i);
    }
    i++;
    }

    1. J2a

      Тоже так пробовал, но не понял сначала как в if проверять остаток от деления. Писал if(i % 2)
      Потом решил присваивать остаток переменной, если ни чего не присвоилось (0) то цикл выводит i

  32. for (int i = 2; i < 237; i=i+2) {
    System.out.println(i);
    }

  33. public class Main {
    public static void main(String[] args){
    int a,b;
    for(a=2,b=2;a<238;a=b*2,b++){
    System.out.print(a + " ");
    }
    }
    }

  34. Вот пример.public class Main {
    public static void main(String[] args) {
    int i;
    for (i = 0; i <= 237; i = i +2) { if (i > 237) {
    continue;
    }
    System.out.println(i);
    }}}

  35. public class Main {

    public static void main(String[] args) {

    int i;
    for (i = 0; i <= 237; i = i +2) { if (i > 237) {
    continue;
    }
    System.out.println(i);
    }

    }
    }

  36. Не понятно объяснено про continue и break. Хорошо было бы если бы прошлись по каждому значению цикла (итерации) и объяснили почему выводится или не выводиться sout.

    1. break выводит из цикла, continue – переходит сразу к следующей итерации?

  37. public class main {
    public static void main(String[] args) {

    int i;
    for (i =0; i < 237; i = i + 2) System.out.println(i); } }

    1. i = 0 *изначальное число*
      I < 237 *говорит о том что цикл не будет идти дальше этой цифры*
      i = i + 2 *позволит нам вывести только четные цифры*

    2. Butuch

      i=236
      i<237
      i+2
      i=238
      В условии – до 237

  38. public class main {
    public static void main(String[] args){
    for(int i = 0; i<237; i++){
    if(i % 2 == 0){
    System.out.println(i);
    }}}}

  39. Там где говорится о foreach упущено само foreach, вместо него for
    int[] arr = {2, 0, 1, 3};
    for (int el : arr) {
    System.out.println(el);
    }
    Или я не прав?

  40. public class Main {
    public static void main(String[] args) {
    int[] numbers = {
    951, 402, 984, 651, 360, 69, 408, 319, 601, 485, 980, 507, 725, 547, 544,
    615, 83, 165, 141, 501, 263, 617, 865, 575, 219, 390, 984, 592, 236, 105, 942, 941,
    386, 462, 47, 418, 907, 344, 236, 375, 823, 566, 597, 978, 328, 615, 953, 345,
    399, 162, 758, 219, 918, 237, 412, 566, 826, 248, 866, 950, 626, 949, 687, 217,
    815, 67, 104, 58, 512, 24, 892, 894, 767, 553, 81, 379, 843, 831, 445, 742, 717,
    958, 609, 842, 451, 688, 753, 854, 685, 93, 857, 440, 380, 126, 721, 328, 753, 470,
    743, 527};
    for (int i = 0; i < numbers.length; i++) { if (numbers[i] == 237) { break; } float el = numbers[i]; if(el % 2 == 0){ System.out.println(numbers[i]); } } System.out.println("Zuuuppp"); } }

  41. нихрена не понимаю (((((

Додати коментар