Pętla while występuje w prawie każdym języku programowania, a Java nie jest wyjątkiem. Pętla while w Javie i innych językach wykonuje instrukcję lub blok instrukcji, o ile wartość warunku, który ją wyzwoliła, jest prawdziwa. W tym artykule porozmawiamy o tym, jak pracować z pętlą while .
Po co są cykle?
Twoje pierwsze programy były sekwencją instrukcji wykonywanych krok po kroku, jedna po drugiej. Bez rozwidleń i powtórzeń. Później zaczęliśmy używać gałęzi z pomocą operatorów warunkowych. Cóż, aby wykonywać powtarzalne czynności, istnieją cykle. Być może cykle są jedną z najbardziej oczywistych korzyści dla początkujących programistów, jaką zapewnia automatyzacja procesów. Wyobraź sobie, że musisz napisać program śledzący, który zlicza liczbę kroków zrobionych w ciągu dnia. A kiedy przejdziesz np. 10 000 kroków, program powinien wysłać Ci powiadomienie o osiągniętym celu. Zadanie wystawienia powiadomienia można wyrazić słowami (lub pseudokodem) w następujący sposób:
While (number of steps less than 10,000)
{
Count steps
}
Send notification "you have reached the goal"
Oznacza to, że gdy tylko liczba kroków jest równa liczbie określonej w warunku, program wychodzi z tego cyklu i wysyła powiadomienie. Albo inny przykład. Wyobraź sobie, że musisz zapamiętać wiersz (lub przemówienie). Wiersz uważa się za zapamiętany, jeśli możesz przeczytać go trzy razy z rzędu bez zaglądania. Jeśli wyobrażasz sobie program, który przechwytuje twoje próby recytowania wiersza, musiałby również użyć pętli:
While (success < 3)
learn a poem
Podobne konstrukcje stosowane są we wszystkich nowoczesnych aplikacjach edukacyjnych, które służą np. do nauki języków czy gry na instrumentach muzycznych.
Pętla while i jej struktura
Aby rozwiązać problemy, takie jak powyższe przykłady, a bardziej ogólnie, aby zautomatyzować powtarzalne działania w Javie, możesz użyć pętli while . Pętla while w Javie będzie działać dobrze w naszym przypadku. Ten projekt organizuje wiele działań w zwięzłej i zrozumiałej strukturze. Instrukcja pętli while występuje w prawie wszystkich językach programowania. Powtarza instrukcję lub blok instrukcji, dopóki wartość jej wyrażenia sterującego jest prawdziwa. Forma pętli while jest następująca:
while(condition == true) {
// statement or loop body
}
Warunek musi być wyrażeniem boolowskim, czyli takim, o którym można powiedzieć, że jest prawdziwe lub fałszywe. Oto kilka przykładów wyrażeń boolowskich:
s != "exit";
a > 5;
true;
Ciało pętli będzie wykonywane tak długo, jak długo wyrażenie warunkowe będzie prawdziwe. Kiedy warunek staje się fałszywy, sterowanie jest przekazywane do wiersza kodu, który następuje po pętli. Jeśli w pętli używana jest tylko jedna instrukcja, to nawiasy klamrowe można pominąć (ale lepiej tego nie robić). Wyrażenie logiczne jest oceniane przed rozpoczęciem pętli while , a następnie za każdym razem przed wykonaniem kolejnego powtórzenia instrukcji.
Przykłady pętli while
Napiszmy program, który sumuje wszystkie liczby od 1 do 10 za pomocą pętli 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);
}
}
Dane wyjściowe to:
55
Musimy obliczyć sumę wszystkich liczb od 1 (lub od zera, to nie ma znaczenia) do 10. Sumę początkową i pierwszy element ustalamy jako zero i będziemy zwiększać element o jeden za każdym przejściem pętla. Będziemy kontynuować sumowanie, aż argument będzie równy 10 (czyli mniejszy niż 11. Podobnie moglibyśmy zapisać warunek i <= 10 ). Weźmy inny przykład pętli while w Javie . Zamierzamy napisać program, w którym użytkownicy wprowadzają dodatnie liczby całkowite. Jeśli wprowadzą zero lub liczbę ujemną, program powinien to zgłosić i zakończyć zadanie.
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");
}
}
Możesz ulepszyć program i dodać do niego np. sprawdzenie, czy użytkownik wprowadził dokładnie liczbę, a nie jakiś inny znak, lub czy liczba jest liczbą całkowitą.
pętla do-while
Klasyczna pętla while , podobnie jak w powyższych przykładach, natychmiast sprawdza, czy warunek jest prawdziwy. Dlatego można go nazwać cyklem z warunkiem wstępnym. Pętla while ma bratnią pętlę do-while z warunkiem końcowym. Oznacza to, że zanim nastąpi test prawdziwości warunku, taka pętla zostanie wykonana co najmniej raz:
do {
// Loop body - periodically executed statement(s)
}while(Boolean expression);
Tak więc pierwszy przykład z taką pętlą wyglądałby tak:
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);
}
}
Niekończący się cykl
Pętli while można używać do organizowania nieskończonych pętli w postaci while(true) : Na przykład, oto program, który w nieskończoność (z pewnymi niuansami) wypisuje serię liczb całkowitych:
public class EndlessLoop {
public static void main(String[] args) {
int i = 0;
while (true) {
System.out.println(i++);
}
}
}
Aby utrwalić to, czego się nauczyłeś, zalecamy obejrzenie lekcji wideo z naszego kursu języka Java
GO TO FULL VERSION