Siklni to'xtatish

All lectures for UZ purposes
Daraja, Dars
Mavjud

1. break operatori

Keling, o'tgan darsdan misolni ko'rib chiqamiz:

Kod Izoh
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
Dastur konsoldan qatorlarni o'qiydi, exit so'zi kiritilguncha.

Dastur konsoldan qatorlarni o'qiydi, exit so'zi kiritilmaguncha. Agar ushbu so'zni kiritsangiz, isExit o'zgaruvchisi true ga aylanadi va sikl shartini !isExit qiymati false bo'ladi, sikl to'xtaydi.

Java'da break deb nomlangan maxsus operator mavjud, bu kabi logikani yozishni osonlashtiradi. Agar sikl ichida break operatorini chaqirsangiz, sikl darhol to'xtaydi: dastur sikldan keyingi buyruqlarni bajarishni boshlaydi. Buyruq juda qisqa:

break;

Endi yuqoridagi misolni break yordamida qayta yozamiz:

Kod Izoh
Scanner console = new Scanner(System.in);
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}
Dastur konsoldan qatorlarni o'qiydi, exit so'zi kiritilgunicha.


2. continue operatori

Lekin break siklni boshqaradigan yagona operator emas. Java'da yana bir operator bor — continue. Agar sikl ichida continue buyruqni chaqirsangiz, siklning joriy aylanishi muddatidan ilgari tugaydi.

Siklning bir marta ishlashi siklning aylanishi deb ataladi. continue joriy sikl aylanishini to'xtatadi, lekin o'zi emas, break operatoridan farqli o'laroq. Buyruq qisqa:

continue;

Ushbu operator continue siklda juda qulay, agar biz sikl tanasining ayrim holatlar uchun bajarilishini o'tkazib yubormoqchi bo'lsak.

Vazifa: ekranga 1 dan 20 gacha bo'lgan 20 sonlarni chiqaradigan, lekin 7 ga bo'linadigan sonlarni o'tkazib yuboradigan dastur yozishni xohlaymiz. Mana kodning ko'rinishi:

Kod Izoh
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
     continue;
   System.out.println(i);
   i++;
}
Dastur 1 dan 20 gacha bo'lgan sonlarni chiqaradi. Agar son 7 ga bo'linadi (bo'linmaning qoldig'i 7 dan 0), ekranga chiqarish o'tkazib yuboriladi.

Aslida bunday kod ishlamaydi, chunki i doimiy 7 da qoladi. Chunki continue chaqiruv System.out.println(i) va i++ ikkita buyruqni o'tkazib yuborishga olib keladi. Shunday qilib, 7 qiymatiga yetgandan keyin, i o'zgaruvchisi o'zgarmay qoladi va sikl abadiy davom etadi.

Biz qasddan bunday kod yozdik, chunki bu juda keng tarqalgan xato. Qanday qilib uni tuzatish mumkin?

Bu erda ikki variant bor:

Variant 1: continue chaqirishdan oldin, lekin i % 7 dan keyin i ni o'zgartirish

Variant 2: siklning boshida i ni har doim oshirish. Biroq, unda boshlang'ich qiymat i 0 bo'lishi kerak.

Variant 1 Variant 2
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
   {
     i++;
     continue;
   }
   
   System.out.println(i);
   i++;
}
int i = 0;
while (i < 20)
{
   i++;
   if ( (i % 7) == 0)
     continue;
   System.out.println(i);
}

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION