CodeGym /Kurslar /Java SELF AZ /Dövrün dayandırılması

Dövrün dayandırılması

Java SELF AZ
Səviyyə , Dərs
Mövcuddur

1. break Komandası

Gəlin əvvəlki dərsdəki nümunəni nəzərdən keçirək:

Kod İzah
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
Proqram, konsoldan exit sətri daxil edilənədək məlumatları oxuyacaq.

Proqram konsoldan məlumatları oxuyur, exit sözü daxil edilənədək. Əgər bu sözü daxil etsəniz, isExit dəyişəni true qiyməti alacaq və dövrün !isExit şərti false olacaq, beləliklə dövr dayanacaq.

Java-da xüsusi break operatoru var ki, o, bu cür məntiqin yazılmasını sadələşdirir. Əgər break komandasını dövrün içində icra etsəniz, dövr dərhal dayanır: proqram dövrün arxasındakı əmrləri icra etməyə davam edir. Bu komanda çox sadədir:

break;

İndi break istifadə edərək, əvvəlcə nəzərdən keçirdiyimiz nümunəni yenidən yazaq:

Kod İzah
Scanner console = new Scanner(System.in);
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}
Proqram, konsoldan exit sətri daxil edilənədək məlumatları oxuyacaq.


2. continue komandası

Amma break dövrün davranışını idarə etməyə imkan verən yeganə operator deyil. Java-da daha bir operator var — continue. Əgər dövrün içində continue komandasını icra etsək, dövrün cari iterasiyası erkən bitəcək.

Dövrün gövdəsinin bir dəfə icrası iterasiya adlanır. continue komandası dövrün cari iterasiyasını dayandırır, amma dövrü özü dayandırmır, bu, break komandasından fərqlidir. Komanda çox qısa görünür:

continue;

Bu continue operatoru çox rahatdır, əgər dövrün bəzi hallar üçün gövdəsini "ötürmək" istəyiriksə.

Məsələ: proqram yazaq ki, ekrana 1dən 20yə qədər 20 ədəd çıxarsın və bu zaman 7-yə bölünən ədədləri keçsin. Kod belə görünə bilər:

Kod İzah
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
     continue;
   System.out.println(i);
   i++;
}
Proqram ekrana 1dən 20yə qədər ədədləri çıxarır. Əgər ədəd 7-yə bölünürsə (bölmənin qalığı 0-dır), ekrana çıxarma ötürülür.

Əslində belə bir kod işləməyəcəkdir, çünki i 7 rəqəmində donub qalacaq. Çünki continue çağırışı System.out.println(i)i++ əmrlərini ötürməyə səbəb olub. Ona görə də 7 dəyərinə çatdıqda i dəyişməyi dayandıracaq və dövr sonsuz olaraq icra olunacaq.

Biz məxsusi olaraq belə bir kod yazdıq, çünki bu çox yayılmış bir səhvdir. Bunu necə düzəltmək olar?

Burada iki variant var:

Variant 1: continue-dan əvvəl, amma i % 7-dən sonra i-ni dəyişin

Variant 2: i-ni dövrün başlanğıcında dəyişdirin. Amma bu halda başlanğıc i dəyəri 0 olmalıdır.

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);
}

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION