Цикълът while се намира в почти всеки език за програмиране и Java не е изключение. Докато цикълът в Java и други езици изпълнява оператор or блок от изрази, стига стойността на conditionто, което го е задействало, да е истина. В тази статия ще говорим за това How да работим с цикъла while .
За Howво са циклите?
Първите ви програми бяха поредица от инструкции, които се изпълняваха стъпка по стъпка една след друга. Без вorци и повторения. По-късно започнахме да използваме разклонения с помощта на условни оператори. Е, за да се извършват повтарящи се действия, има цикли. Може би циклите са едно от най-очевидните предимства за начинаещите програмисти, които автоматизацията на процесите предоставя. Представете си, че трябва да напишете програма за проследяване, която отчита броя на стъпките, напequalsи за един ден. И когато преминете например 10 000 стъпки, програмата трябва да ви изпрати известие за постигнатата цел. Задачата за издаване на уведомление може да бъде изразена с думи (or псевдоcode) по следния начин:
While (number of steps less than 10,000)
{
Count steps
}
Send notification "you have reached the goal"
Тоест, веднага щом броят на стъпките стане equals на посочения в conditionто, програмата излиза от този цикъл и изпраща известие. Или друг пример. Представете си, че трябва да запомните стихотворение (or реч). Едно стихотворение се счита за запомнено, ако можете да го прочетете три пъти подред, без да надничате. Ако си представите програма, която улавя опитите ви да рецитирате стихотворение, тя също ще трябва да използва цикъл:
While (success < 3)
learn a poem
Подобни конструкции се използват във всички съвременни образователни applications, които се използват например при изучаване на езици or свирене на музикални инструменти.
Цикълът while и неговата структура
За да разрешите проблеми като примерите по-горе и по-общо, за да автоматизирате повтарящи се действия в Java, можете да използвате цикъла while . Java цикълът while ще работи добре в нашия случай. Този дизайн подрежда множество действия в кратка и разбираема структура. Операторът за цикъл се намира в почти всички езици за програмиране. Той повтаря израз or блок от изрази, докато стойността на неговия контролен израз е истина. Формата на цикъла while е следната:
while(condition == true) {
// statement or loop body
}
Условието трябва да бъде булев израз, който може да се каже, че е верен or неверен. Ето няколко примера за булеви изрази:
s != "exit";
a > 5;
true;
Тялото на цикъла ще се изпълнява, докато условният израз е верен. Когато conditionто стане невярно, управлението се прехвърля към реда от code, който идва след цикъла. Ако в цикъла се използва само един оператор, фигурните скоби могат да бъдат пропуснати (но е по-добре да не правите това). Логическият израз се оценява преди началото на цикъла while и след това всеки път, преди да се изпълни следващото повторение на оператора.
Примери за цикли
Нека напишем програма, която да сумира всички числа от 1 до 10 с помощта на цикъл while :
public class WhileTest0 {
public static void main(String[] args) {
int i = 0;
int sum = 0;
//while loop
while (i < 11) {
sum = sum + i;
i++;
}
System.out.println(sum);
}
}
Резултатът е:
55
Трябва да изчислим сумата на всички числа от 1 (or от нула, няма meaning) до 10. Правим първоначалната сума и първия елемент equals на нула и ще увеличаваме елемента с единица с всяко преминаване на примката. Ще продължим да сумираме, докато аргументът стане equals на 10 (т.е. по-малко от 11. По подобен начин можем да напишем conditionто i <= 10 ). Нека вземем друг пример за цикъл на Java. Ще напишем програма, в която потребителите въвеждат положителни цели числа. Ако въведат нула or отрицателно число, програмата трябва да отчете това и да завърши работата.
import java.util.Scanner;
public class WhileTest {
public static void main(String[] args) {
int positiveNumber = 1;
Scanner scanner = new Scanner(String.valueOf(positiveNumber));
while (positiveNumber > 0) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter positive number:");
positiveNumber = sc.nextInt();
System.out.println("ok, next");
}
System.out.println("The number should be positive");
}
}
Можете да подобрите програмата и да добавите към нея например проверка дали потребителят е въвел точно число, а не няHowъв друг знак, or че числото е цяло число.
do-while цикъл
Класическият цикъл while , Howто в примерите по-горе, незабавно проверява дали conditionто е вярно. Следователно може да се нарече цикъл с предпоставка. Цикълът while има брат do-while, цикъл с постcondition. Тоест, преди да се извърши проверката на истинността на conditionто, такъв цикъл ще бъде изпълнен поне веднъж:
do {
// Loop body - periodically executed statement(s)
}while(Boolean expression);
И така, първият пример с такъв цикъл би изглеждал така:
public class WhileTest0 {
public static void main(String[] args) {
int i = 0;
int sum = 0;
do
{
sum = sum + i;
i++;
} while (i < 11);
System.out.println(sum);
}
}
Безкраен цикъл
Цикълът while може да се използва за организиране на безкрайни цикли във формата while(true) : Например, ето програма, която безкрайно (с някои нюанси) отпечатва поредица от цели числа:
public class EndlessLoop {
public static void main(String[] args) {
int i = 0;
while (true) {
System.out.println(i++);
}
}
}
За да затвърдите наученото, ви предлагаме да гледате видео урок от нашия курс по Java
GO TO FULL VERSION