CodeGym /Java блог /Случаен /Java вложени цикли
John Squirrels
Ниво
San Francisco

Java вложени цикли

Публикувано в групата
Java, Howто повечето други езици за програмиране, поддържа вложени цикли. Това означава само цикъл в цикъл. В тази статия ще разберем How да работим с вложени цикли в Java.

Java вложени цикли

Един цикъл се нарича вложен, ако е поставен вътре в друг цикъл. При първото преминаване външният цикъл извиква вътрешния цикъл, който се изпълнява до завършване, след което управлението се прехвърля към тялото на външния цикъл. При второто преминаване външният цикъл отново извиква вътрешния. И така до края на външния цикъл. В Java има четири вида цикли:
  • за цикъл

  • докато цикъл

  • do...while цикъл

  • за всеки цикъл

Всички те поддържат вложени цикли. Конструкциите с вложен цикъл се използват, когато трябва да бъдат изпълнени две условия, едното зависи от другото. Например, ако трябва да покажете двумерна матрица, полупирамида or table за умножение.

Как работят вложените цикли на Java

Вероятно най-използваният цикъл в Java е for , до голяма степен защото е доста гъвкав и codeът с него е доста лесен за четене. Ето общия синтаксис за вложен for цикъл:

// outer loop
for (initialization; condition; increment) {
  //write here your code 

  //nested loop
  for(initialization; condition; increment) {
    //write here your code
  }
..
}
Как работи той? Външният цикъл започва. След това вложеният for цикъл започва работата и преминава през своя индекс, докато conditionто бъде изпълнено, и отново предава работата на външния цикъл и това се случва, докато conditionто на външния цикъл не бъде изпълнено. Звучи малко сложно, нали? Е, ще бъде много по-лесно за разбиране с конкретен пример, така че нека да преминем към него.

Пример за вложен code за цикъл

Ето един класически пример. Нека отпечатаме половин пирамида, като използваме две for цикли. Един от тях е вложен.

public class NestedLoopsDemo1 {

   public static void main(String[] args) {

       for (int i = 0; i < 10; i++) {
           for (int j = 0; j<=i;  j++)
               System.out.print("*");
           System.out.println();
       }
      
   }
}
Резултатът е:
* ** *** **** ***** ****** ******* ******** ********* ***** *****

Пример за code на вложен цикъл while


public class NestedLoopsDemo2 {

   public static void main(String[] args) {

       int i = 0;
       while (i < 10) {
           int j = 0;
           while (j <= i) {
               System.out.print("*");
               j++;
           }
           System.out.println();
           i++;

       }
   }
}
Резултатът е същият като в предишния пример:
* ** *** **** ***** ****** ******* ******** ********* ***** *****
Цикълът do...while е подобен на цикъла while . Основната разлика е, че тялото на do...while цикъла се изпълнява веднъж преди проверката на израза.

Пример за code на вложени цикли foreach

for-each цикълът може да бъде вложен Howто обикновено for цикъл. Ето примера за вложен цикъл for-each , който итерира двуизмерен масив.

public class NestedLoops2 {

       public static void main(String[] args)
       {
           int[][] mainArray = { {5, 4, 3, 2, 1}, {7, 8, 9, 10, 11} };

           for (int[] myArray : mainArray)
           {
               for (int i : myArray)
               {
                   System.out.print(i+" ");
               }
               System.out.println("");
           }
       }
}
Резултатът е:
5 4 3 2 1 7 8 9 10 11

Пример за смесен цикъл for и while

Понякога можем да вложим различни видове цикли един в друг. Например за вътре докато or за вътре за-всеки . Това обаче не е най-добрата практика за програмиране. Такива конструкции значително влошават четливостта на codeа. Така че професионалните програмисти се опитват да не смесват едното с другото. Е, те го правят, но само ако наистина е необходимо. И още едно малко правило: ако избирате между while и for , използвайте for, където е възможно. Въпреки това, тук ще имаме пример за използване на for цикъл вътре в while . Нека изградим нашата полупирамида отново.

public class NestedLoopsDemo2 {

   public static void main(String[] args) {
       int i = 0;
       while (i < 10) {
           for (int j = 0; j <= i; j++) {
               System.out.print("*");
           }
           System.out.println();
           i++;

       }
   }
}
Резултатът е без изненади:
* ** *** **** ***** ****** ******* ******** ********* ***** *****
Коментари
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION