JAVA CIKLAI
Java for ciklas
for ciklas patogus, kai iš anksto žinai kartojimų skaičių arba nori nuosekliai keisti skaitiklį. Visa ciklo valdymo informacija pateikiama vienoje eilutėje.
for ciklo sintaksė
for (inicializavimas; sąlyga; pakeitimas) {
// Kartojamas kodo blokas
}Jis tik parodo tris vietas, kuriose reikia įrašyti tikrą skaitiklį, sąlygą ir jo pakeitimą.
| Dalis | Kada vykdoma? | Paskirtis |
|---|---|---|
| Inicializavimas | Vieną kartą prieš ciklą | Sukuria arba nustato skaitiklį |
| Sąlyga | Prieš kiekvieną iteraciją | Nusprendžia, ar vykdyti bloką |
| Pakeitimas | Po kiekvienos iteracijos | Pakeičia skaitiklio reikšmę |
- Inicializavimas paruošia skaitiklį. Pavyzdžiui,
int diena = 1. - Sąlyga prieš kiekvieną kartojimą paklausia, ar ciklas dar gali tęstis.
- Jeigu sąlyga yra
true, Java įvykdo kodą tarp riestinių skliaustų. - Pakeitimas atnaujina skaitiklį, o tada sąlyga tikrinama iš naujo.
Keturių dienų skaičiavimas
Įsivaizduok, kad norime sunumeruoti keturias dienas:
for (int diena = 1; diena <= 4; diena++) {
System.out.println("Diena: " + diena);
}Diena: 1
Diena: 2
Diena: 3
Diena: 4
- Prieš prasidedant ciklui sukuriamas skaitiklis
diena, kurio pradinė reikšmė yra1. - Java patikrina
diena <= 4. Pirmą kartą tikrinama1 <= 4, todėl sąlyga teisinga. - Konsolėje parodoma dabartinė dienos reikšmė.
diena++prideda vienetą, todėl kitą kartą skaitiklio reikšmė yra2.- Tai kartojama iki dienos
4. Kai skaitiklis tampa5, sąlyga5 <= 4yra klaidinga ir ciklas baigiasi.
Skaitiklis gali keistis ne tik vienetu
Šis ciklas išvardija vienoje gatvės pusėje esančius porinius namų numerius:
for (int namoNumeris = 2; namoNumeris <= 10; namoNumeris += 2) {
System.out.println("Namo numeris: " + namoNumeris);
}Namo numeris: 2
Namo numeris: 4
Namo numeris: 6
Namo numeris: 8
Namo numeris: 10
- Skaitiklis
namoNumerisprasideda nuo pirmojo porinio skaičiaus2. - Po kiekvieno parodyto numerio komanda
namoNumeris += 2prideda du. - Todėl skaitiklis juda taip:
2, 4, 6, 8, 10ir neprisiliečia prie nelyginių skaičių. - Po
10skaitiklis tampa12. Sąlyga12 <= 10klaidinga, todėl ciklas sustoja.
Rezultato kaupimas cikle
Ona penkias dienas kasdien perskaito po 10 knygos puslapių. Ciklas gali suskaičiuoti jų bendrą skaičių:
int perskaitytaPuslapiu = 0;
for (int diena = 1; diena <= 5; diena++) {
perskaitytaPuslapiu += 10;
}
System.out.println("Perskaityta puslapių: " + perskaitytaPuslapiu);Perskaityta puslapių: 50
- Pradžioje
perskaitytaPuslapiuyra0, nes Ona dar nepradėjo skaityti. - Ciklas vykdomas penkis kartus – po vieną kartą kiekvienai dienai.
- Per kiekvieną kartojimą
+= 10prie ankstesnio rezultato prideda dar 10 puslapių. - Reikšmė auga taip:
10, 20, 30, 40, 50. - Ciklui pasibaigus,
println()parodo galutinę sukauptą reikšmę 50.
Mažėjantis skaitiklis
Jonas iš automobilio turi parnešti keturis pirkinių maišelius. Skaitiklis gali mažėti naudojant --:
for (int maiseliai = 4; maiseliai >= 1; maiseliai--) {
System.out.println("Automobilyje liko maišelių: " + maiseliai);
}
System.out.println("Visi pirkiniai parnešti");Automobilyje liko maišelių: 4
Automobilyje liko maišelių: 3
Automobilyje liko maišelių: 2
Automobilyje liko maišelių: 1
Visi pirkiniai parnešti
- Skaitiklio pradinė reikšmė yra
4, nes automobilyje yra keturi maišeliai. - Po kiekvieno kartojimo
maiseliai--sumažina skaitiklį vienetu. - Konsolėje paeiliui parodomos reikšmės
4, 3, 2, 1. - Kai skaitiklis tampa
0, sąlygamaiseliai >= 1tampa klaidinga ir ciklas baigiasi. - Java tęsia programą po ciklo ir parodo tekstą Visi pirkiniai parnešti.
Kai sąlyga klaidinga nuo pradžių
Programa turi laistyti gėles tik nuo pirmos iki penktos dienos, tačiau skaitiklis klaidingai pradėtas nuo aštuntos:
for (int diena = 8; diena <= 5; diena++) {
System.out.println("Laistome gėles");
}Nieko neišvedama
- Skaitiklis
dienaiš karto gauna reikšmę8. - Dar prieš pirmą kartojimą Java patikrina sąlygą
8 <= 5. - Atsakymas yra
false, todėl ciklo viduje esantisprintln()neįvykdomas nė karto. - Dėl to konsolė lieka tuščia. Tai nėra klaida – ciklas tiesiog neturėjo nė vieno tinkamo kartojimo.
for ar while?
Rinkis for, kai kartojimus natūraliai valdo skaitiklis arba jų skaičius žinomas. while dažniausiai aiškesnis, kai kartojimų skaičius nežinomas ir ciklas priklauso nuo besikeičiančios programos būsenos.

