JavaRush /Java Blog /Random-TK /Java-da Loop üçin

Java-da Loop üçin

Toparda çap edildi
Iň oňat programmist ýalta programmist diýýärler. Birmeňzeş hereketi birnäçe gezek ýerine ýetirmegiň ýerine, özi üçin bu işi etjek algoritm oýlap tapar. Ony täzeden etmegiň zerurlygy bolmaz ýaly gowy eder. Java-da aýlaw üçin nädip ulanmaly - 1Şol bir kody gaýtalap ýazmazlyk üçin aýlawlar oýlanyp tapyldy. 0-dan 99-a çenli sanlary konsola görkezmelidigimizi göz öňüne getireliň.
System.out.println(0);
System.out.println(1);
System.out.println(2);
System.out.println(3);
System.out.println(4);
System.out.println(5);
// And so on
Bu kod 100 setir alar! Örän köp. Ine, aýlaw bilen nähili boljakdygy:
for(int i = 0; i < 100; i++) {
   System.out.println(i);
}
Diňe 3 setir!

Aýlawlar näme?

A loop, algoritmiň ýerine ýetirilişiniň çyzyklylygyny bozýan we görkezilen kody birnäçe gezek ýerine ýetirmäge mümkinçilik berýän programma kodunyň dolandyryş gurluşydyr. Mysal üçin, 30 damja derman içmeli. Algoritm şuňa meňzeş bir zat bolar:
  1. Bir stakan taýýarlaň.
  2. Gapagy açyň.
  3. 1 damja alyň.
  4. 2 damja alyň.
  5. ...
  6. 30 damja alyň.
  7. Dermany ýapyň.
  8. Alnan bölegini alyň.
Bu algoritmi has çalt düşündirip bolar:
  1. Bir stakan taýýarlaň.
  2. Damja gapagyny açyň.
  3. 30 damja alyň.
  4. Dermany ýapyň.
  5. Alnan bölegini alyň.
Her gün diýen ýaly beýleki adamlar bilen söhbetdeşlikde aýlaw üçin ulanýarys: “... köçeden 20 ädim ...”, “... 10 gezek gaýtalaň we ýene 5 gezek 2 esse haýal ...”, “.. Dürli kategoriýalarda 5 sany satyn alyň we baýrak alyň ... ”Uzak wagtlap dowam edip bilerdim, ýöne manysy düşnüklidir. Java-da, koduňyzyň gysga we gysga bolmagy üçin loop zerurdyr.

Aýlaw üçin nähili işleýär

“A loop” şular ýaly ulanylýar:
for(<начальная точка>; <condition выхода>; <операторы счетчика>) {
	// Loop body
}
Пример перебора цифр от 0 до 5 и вывод каждой в консоль:
for(int i = 0; i < 5; i++) {
   System.out.println(i);
}
Netije:

0
1
2
3
4
Bu ýazgyny adam diline terjime etsek, aşakdakylary alarys: " Başlangyç bahasy 0 bolan 5 üýtgeýjini dörediň, 5-e ýetýänçä, oňa 1 goşuň we her ädimde i bahasyny konsola ýazyň ." Java-da aýlaw üç basgançakdan ybarat bolup, aşakdaky diagramma bilen görkezilip bilner: Java-da aýlaw üçin nädip ulanmaly - 2Aýlawdan çykmagyň şerti Boolean aňlatmasydyr. Eger ýalan bolsa, aýlaw gutarar. Aboveokardaky mysalda üýtgeýji i1-e köpelýär. Eger bahasy 5-den pes bolsa, aýlaw dowam edýär. 5öne 5-den uly ýa-da deň bolan badyna iaýlaw durar. Hasaplaýjy operator, hasaplaýjy üýtgeýjide öwrülişi amala aşyrýan aňlatma. Aboveokardaky mysalda üýtgeýji i1 köpeldi, ýagny aýlaw takmynan 5 gezek ýerine ýetiriler. Hasaplaýjy operator üýtgeýjä 2 goşsa i, netije başgaça bolar:
for(int i = 0; i < 5; i = i + 2) {
   System.out.println(i);
}
Netije:

0
2
4
Şeýle hem üýtgeýjini köpeldip, bölüp, bir güýje çykaryp bilersiňiz, umuman islän zadyňyzy edip bilersiňiz. Esasy zat, özgerişleriň sanlara sebäp bolmagydyr. Aýlawyň korpusy ýerine ýetirilip bilinjek islendik koddyr. Aboveokardaky mysalda aýlawyň korpusy i üýtgeýäniň bahasyny konsola çykarýardy, ýöne bu bedeniň mazmuny wezipe we hyýal bilen çäklenýär. Schemehli shemany jemläp, aýlaw üçin munuň prinsipi şeýleräk: aýlawyň göwresindäki kod, aýlawdan çykmagyň şerti ýetmezden ozal garşydaş operatoryň ýerine ýetirjek sanyndan birnäçe esse ýerine ýetiriler. . Eger aýlawdan çykyş ýagdaýyny aşakdaky ýaly düzseňiz true:
for(int i = 0; true; i++) {
   if(i % 1000000 == 0) System.out.println(i);
}
System.out.println("Loop ended");
Soňra aýlawdan soň kod ýalňyşlyk bilen bellener unreachable statement, sebäbi hiç haçan ýerine ýetirilmez. Ussatlyk üçin kynçylyk: aşakdaky kody işletmegiň netijesinde Loop endedkonsola “” çykarmy ýa-da aýlaw tükeniksiz işlärmi?
for(int i = 0; i > -1; i++) {
   if(i % 1000000 == 0) System.out.println(i);
}
System.out.println("Loop ended");
Jogap: bolar. I üýtgeýjisi iru-giç iň ýokary bahasyna ýeter we hasam ýokarlanmagy ony iň ýokary negatiw gymmata öwürer, netijede çykyş şerti kanagatlandyrylar (i <= -1).

her aýlaw

Aýlawlar bilen işleýän wagtyňyz, käwagt massiwleriň ýa-da kolleksiýalaryň üstünden gaýtalamaly bolarsyňyz. Adatça, aýlaw üçin massiw arkaly gaýtalap bilersiňiz:
public void printAllElements(String[] stringArray) {
   for(int i = 0; i < stringArray.length; i++) {
       System.out.println(stringArray[i]);
   }
}
Dogry. Şeýle-de bolsa, massiwiň ähli elementlerini birin-birin gaýtalamak üçin “forEach” gurluşyny tapdylar. Onuň goly aşakdaky ýaly:
for(<Тип element> <Name переменной, куда будет записан очередной элемент> : <Название массива>) {
	// Loop body
}
Bir topar setir arkaly gaýtalap bilersiňiz we hersini aşakdaky görnüşde konsola çap edip bilersiňiz:
public void printAllElements(String[] stringArray) {
   for(String s : stringArray) {
       System.out.println(s);
   }
}
Şeýle hem gysga we gysga. Iň esasy zat, hasaplaýjy we çykyş ýagdaýy barada pikirlenmegiň zerurlygy ýok, hemme zat eýýäm biziň üçin edildi.

Aýlawlar üçin nähili ulanylýar

Indi dürli meseleleri çözmek üçin Java-da loop üçin ulanmagyň birnäçe mysallaryna seredeliň.

Ters aýlaw (ululykdan kiçä)

for(int i = 5; i > 0; i--) {
   System.out.println(i);
}
Netije:

5
4
3
2
1

Birnäçe üýtgeýji we aýlaw korpusynda hasaplaýjyny köpeltmek

Bir aýlawda birnäçe üýtgeýjini ulanyp bilersiňiz, mysal üçin olary ters sözlemde öwrüp bolýar:
int a = 0;
for(int i = 5; i > 0; i--, a++) {
   System.out.print("Step: " + a + " Meaning: ");
   System.out.println(i);
}
Netije:

Шаг: 0 Значение: 5
Шаг: 1 Значение: 4
Шаг: 2 Значение: 3
Шаг: 3 Значение: 2
Шаг: 4 Значение: 1
Ora-da biri-birine deň bolýança iki üýtgeýjini we aýlawy yglan ediň:
for(int i = 5, j = 11; i != j; i++, j--) {
   System.out.println("i: " + i + " j: " + j);
}
Netije:

i: 5 j: 11
i: 6 j: 10
i: 7 j: 9
Bu hereketiň haýsydyr bir ähmiýetiniň bolmagy ähtimal däl, ýöne bu mümkinçiligi bilmek peýdalydyr. Şeýle hem, aýlaw üçin içki aýlawlary döredip bilersiňiz. Bu ýagdaýda aýlaw ädimleriniň sany köpeler:
for(int i = 0; i < 5; i++) {
   System.out.print(i + " | ");
   for(int j = 0; j < 5; j++) {
       System.out.print(j + " ");
   }
   System.out.print('\n');
}
Netije:

0 | 0 1 2 3 4 
1 | 0 1 2 3 4 
2 | 0 1 2 3 4 
3 | 0 1 2 3 4 
4 | 0 1 2 3 4
Hasap aýlawynda jdaşarky aýlawyň hasaplaýjysyna girip bolýar. Bu, öýjükli aýlawlary iki ölçegli, üç ölçegli we beýleki massiwlerden geçmegiň iň amatly usuly edýär:
int[][] array = { {0, 1, 2, 3, 4 },
                       {1, 2, 3, 4, 5},
                       {2, 3, 4, 5, 6},
                       {3, 4, 5, 6, 7}};

for(int i = 0; i < array.length; i++) {
   for(int j = 0; j < array[i].length; j++) {
       System.out.print(array[i][j] + " ");
   }
   System.out.print('\n');
}
Netije:

0 1 2 3 4 
1 2 3 4 5 
2 3 4 5 6 
3 4 5 6 7 

Sikliň ir tamamlanmagy

Bir aýlaw işlenende bir aýlawy kesmeli bolsaňyz, breakaýlawyň häzirki göwresini saklaýan operatory ulanyň. Ondan soňky ähli gaýtalanmalar hem atylýar:
public void getFirstPosition(String[] stringArray, String element) {
   for (int i = 0; i < stringArray.length; i++) {
       if(stringArray[i].equals(element)) {
           System.out.println(i);
           break;
       }
   }
}
Usul massiwde ilkinji gözlenýän elementiň ýagdaýyny çap eder:
String[] array = {"one", "two", "three", "Jeronimo"};
getFirstPosition(array, "two");
Netije:

1

Tükeniksiz aýlaw

Aýlaw üçin çäksiz döretmegiň başga bir usuly, hasaplaşyk deklarasiýasynyň meýdançasyny, çykyş ýagdaýyny we hasap sözlemini boş goýmakdyr:
for (;;) {
}
Mostöne ýadyňyzdan çykarmaň, köp halatlarda çäksiz aýlaw logiki ýalňyşlygyň subutnamasydyr. Şeýle aýlawyň çykyş ýagdaýy bolmaly. Java-da aýlaw üçin nädip ulanmaly - 3
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION