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

Java за цикъл

Публикувано в групата
Веднъж Марк Зукърбърг отбеляза, че компютрите наистина са добри в повторението на команди. За човека не е лесно, уморяваме се да повтаряме едно и също нещо много пъти подред, но компютърът може да го прави мorони и мorарди пъти и никога да не му омръзва. Ако се опитате да изпратите поздрави на всички потребители на Facebook, няма човек, който да има достатъчно дни, за да го направи. Въпреки това можете да създадете компютър, който да реши тази задача, като напишете няколко реда code. Ето How работят циклите. Те ни позволяват да не повтаряме едни и същи рутинни действия. Най-популярният цикъл в Java е така нареченият дефиниран цикъл or for цикъл.

Как да напиша for цикъл в Java? За цикъл като цяло

Цикълът For изпълнява някои изрази за определен брой пъти. Например, писането петдесет пъти „Не трябва да бъда така, хо-хо, хо“ or изпращане на покани до всичките ви приятели са типични задачи за този вид цикъл. Синтаксисът на най-разпространената version на for цикъл:

for ([counter initialization]; [checking conditions]; [changing of the counter])
{
    //  statements
}
Изразът за инициализация се изпълнява веднъж, след което conditionто се оценява, което трябва да бъде булев израз.
  • Когато цикълът започне, инициализациите се изпълняват.
  • Когато условията се изчислят като false, нашият цикъл спира работата си.
Броячът се променя, обикновено нарастването (or намаляването) се случва след всяка итерация през цикъла. Можете да пропуснете всеки от трите израза на цикъл (инициализация, проверка на conditionто, промяна на брояча). Условието на цикъла се проверява преди следващата стъпка от цикъла. Ако conditionто е невярно, програмата излиза от цикъла и продължава с инструкцията, следваща конструкцията for. Тук имаме блокова диаграма на for цикъл. For цикъл в Java - 2

Как да използвате for цикъл в Java. Прост пример.

Ето конкретен пример за цикъл на Java. Да напишем десет пъти "Здравей!" Низ всеки път ще бъде от новия ред с номер на този ред. Трябва да получим следващия изход:
  1. Здравейте!
  2. Здравейте!
  3. Здравейте!
  4. Здравейте!
  5. Здравейте!
  6. Здравейте!
  7. Здравейте!
  8. Здравейте!
  9. Здравейте!
  10. Здравейте!
Ето нашата Java програма, която решава този проблем:

public class ForExample {
   public static void main(String[] args) {
       for (int i = 0; i < 10; i++) {
           System.out.println(i + 1 + ". Hello!");
       }
   }
}

Как работи?

Стъпка 1. Брояч i = 0. Цикълът проверява нашето condition, i << 10, следователно операторите на цикъла се изпълняват. Отпечатва фразата "1. Здравей!". 1 е низ i + 1 (защото броим от нула, но първият ред все още е първият). Брояч i се увеличава. Сега i = 1. Стъпка 2. Брояч i = 1. i < 10, така че имаме фраза "2. Здравей!" и i + 1 = 2. … Стъпка 10. Брояч i = 9, имаме "10. Здравей!" и i се увеличава до 10. Стъпка 11. Брояч i = 10. i < 10 ? Не, невярно е. Следователно цикълът е завършен. For цикъл в Java - 3

Цикъл while и for цикъл: разлики и прorки

В Java неопределеният цикъл or цикълът while се изпълнява непрекъснато, ако булевото condition се сбъдне. Синтаксисът на цикъла while:

while (boolean condition)
       {
            loop statements...
       }
Доста често можете да изберете кой цикъл искате да използвате. Понякога те са много близки и можете да използвате и двете. Например, ето codeа за същата задача (писане десет пъти „Здравей!“ с номер на реда), написана с цикъл while:

public class ForAndForEach {
   public static void main(String[] args) {
       int j = 0;  //  we use the counter this way 
       while (j < 10) {
           System.out.println(j + 1 + ". Hello!");
           j++;
       }
   }
}
Професионалните програмисти обаче не харесват цикъла while и където е възможно, опитайте се да използвате цикъла for.
ЗА ДОКАТО

Използваме цикъла for, ако вече знаем броя на итерациите.

Използваме цикъл while, ако не знаем точния брой повторения.

Инициализирането, проверката на състоянието и промяната на брояча вече са зашити в синтаксиса на цикъла

Инициализация и проверка на състоянието вътре в цикъла. Можете допълнително да използвате брояч в отчети.

Безкраен цикъл за:


for(;;){
	System.out.println("working...");
}

Безкраен цикъл докато:


while(true){
	System.out.println("working...");
}

Как да излезете от for цикъл в java

Обикновено for цикълът работи като поток и естественият начин за излизане от цикъл е, когато дадено condition приеме невярна стойност. Въпреки това има два контролни израза, които ви позволяват да излезете от цикъла, преди да получите фалшивата стойност на дадено condition — прекъсване и продължаване.
  • break позволява излизане от текущото тяло на цикъла, сякаш conditionто на цикъла е оценено на false.
  • continue кара цикъла да премине към следващата стъпка (итерация на брояча), без да изпълнява операторите.
Нека решим следващия проблем с помощта на прекъсване и продължаване. Имаме набор от имена и поздравяваме всички от този масив, с изключение на непознатите. Така че, ако срещнем низ „Непознат“ по време на нашия цикъл, ние излизаме от него (изчезваме и спираме, за да поздравим някой друг).

public class ForBreakExample {
   public static void main(String[] args) {
       String[] names = {"Mike", "Dustin", "Stranger", "Lucas", "Will"};
       for (int i = 0; i < names.length; i++) {
//  how to break out of a for loop, java: check if we have any "Stranger" in  //  our array            
if (names[i].equals("Stranger")) {
               System.out.println("I don't chat with strangers");
               break;
           }
           System.out.println("Hello," + names[i]);
       }
   }
}
Резултатът от изпълнението на нашата програма е:

Hello,Mike
Hello,Dustin
I don't chat with strangers
виждаш ли Избягахме от примката, преди да поздравим Лукас и Уил. Сега нека използваме продължи, само за да игнорираме „Непознат“, но да останем в цикъла, за да поздравим други приятели.

public class ForContinueExample {
   public static void main(String[] args) {
       String[] names = {"Mike", "Dustin", "Stranger", "Lucas", "Will"};
       for (int i = 0; i < names.length; i++) {
           if (names[i].equals("Stranger")) {
               System.out.println("I don't chat with strangers");
               continue;
           }
           System.out.println("Hello," + names[i]);
       }
   }
}
Резултатът е:

Hello,Mike
Hello,Dustin
I don't chat with strangers
Hello,Lucas
Hello,Will
Отлично! Поздравихме всички приятели, но не говорихме с непознат.

Подобрена version на for цикъл or for-each

For-each е вид for цикъл, който се използва, когато трябва да обработите всички елементи на масив or колекция. Всъщност самата фраза за всеки не се използва в този цикъл. Синтаксисът е Howто следва:

for (type itVar: array)
{
    Block of operators;
}
Където type е типът на итеративната променлива (същия като типа данни на масива), ItVar е нейното име, array е масивът or може да има друга структура от данни, например ArrayList. Както можете да видите, няма брояч, променливата за итерация обхожда елементите на масив or колекция, а не стойностите на индекса. Когато се изпълнява такъв цикъл, на променливата за итерация последователно се присвоява стойността на всеки елемент от масива or колекцията, след което се изпълнява посоченият блок от инструкции (or оператор). Внимание: цикълът for-each може да се приложи към масиви и всяHowви класове, които имплементират интерфейса java.lang.Iterable. Нека разрешим същия проблем с поздрави приятели, като игнорираме непознати („Stranger“), но този път използваме цикъл for-each.

public class ForEachExample {
   public static void main(String[] args) {
       String[] names = {"Mike", "Dustin", "Stranger", "Lucas", "Will"};
	//  for each loop, Java code
       for (String name : names) {
           if (name.equals("Stranger")) {
               System.out.println("I don't chat with strangers");
               continue;
           }
           System.out.println("hello, " + name);
       }
   }
}
За да затвърдите наученото, ви предлагаме да гледате видео урок от нашия курс по Java
Коментари
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION