Java'da foreach nima?
For-each - massiv yoki to'plamning barcha elementlarini qayta ishlash kerak bo'lganda foydalaniladigan for tsiklining bir turi. "Har bir uchun" ingliz tilidan "hamma uchun" deb tarjima qilingan. Aslida, bu siklda foreach iborasi ishlatilmaydi. Uning sintaksisi quyidagicha:for (type itVar : array)
{
Блок операторов;
}
Qayerda type
takrorlanuvchi o'zgaruvchining turi (massivdagi ma'lumotlar turi bilan bir xil!), itVar
uning nomi, array
massiv (shuningdek, boshqa ma'lumotlar strukturasi, qandaydir to'plam bo'lishi mumkin, masalan, ArrayList
), ya'ni sikl bajariladigan ob'ekt. Ko'rib turganingizdek, ushbu dizaynda hisoblagich ishlatilmaydi; iteratsiya o'zgaruvchisi indeks qiymatlari emas, balki massiv yoki to'plamning elementlari bo'ylab takrorlanadi. Bunday siklni bajarishda iteratsiya o'zgaruvchisiga massiv yoki to'plamning har bir elementining qiymati ketma-ket ravishda beriladi, shundan so'ng ko'rsatilgan operatorlar bloki (yoki bayonot) bajariladi.
For-har bir tsikldan tashqari, Java-da forEach() usuli ham mavjud. Bu haqda, masalan, " Tsikllarni yozishni to'xtating!" Maqolasida o'qishingiz mumkin. Java 8 da kollektsiyalar bilan ishlashning eng yaxshi 10 ta eng yaxshi usullari ” |
for (int i=0; i<array.length; i++)
{
Блок операторов;
}
Misol uchun Java
Keling, talabalarning baholari qatorini yarataylik. Keyin, har biridan foydalanib, biz barcha ballarni chop etamiz, o'rtacha ballni ko'rsatamiz va maksimal ballni topamiz.public class ForEachTest {
//method that prints all grades
public static void printAllGrades(int[] grades) {
System.out.print("|");
for (int num : grades) {
System.out.print(num + "|");
}
System.out.println();
}
//method that displays the average score
public static double midGrade(int[] numbers) {
int grade = 0;
for (int num : numbers) {
grade = num + grade;
}
return ((double) grade / numbers.length);
}
//method in which the best (maximum) score is calculated
public static int bestGrade(int[] numbers) {
int maxGrade = numbers[0];
for (int num : numbers) {
if (num > maxGrade) {
maxGrade = num;
}
}
return maxGrade;
}
public static void main(String[] args) {
//array of ratings
int[] grades = {5, 10, 7, 8, 9, 9, 10, 12};
int highest_marks = bestGrade(grades);
System.out.print("All the grades: ");
printAllGrades(grades);
System.out.println("The highest grade is " + highest_marks);
System.out.println("The average grade is " + midGrade(grades));
}
}
Dastur chiqishi:
All the grades: |5|10|7|8|9|9|10|12|
The highest grade is 12
The average grade is 8.75
Keling, barcha ballarni chop etish usuli qanday ko'rinishini ko'rib chiqamiz, bu oddiy for tsikli yordamida amalga oshiriladi:
public static void printAllGrades(int[] grades) {
System.out.print("|");
for (int i = 0; i < grades.length; i++) {
System.out.print(grades[i] + "|");
}
System.out.println();
}
Agar bu usulni method dan chaqirsak main
, natijaga erishamiz:
All the grades: |5|10|7|8|9|9|10|12|
To'plamlar bilan har bir tsikldan foydalanishga misol
Keling, nomlar to'plamini yaratamiz va barcha nomlarni ekranda ko'rsatamiz.List<String> names = new ArrayList<>();
names.add("Snoopy");
names.add("Charlie");
names.add("Linus");
names.add("Shroeder");
names.add("Woodstock");
for(String name : names){
System.out.println(name);
}
For-har bir tsiklning cheklovlari
For-each ning ixcham shakli for-ga qaraganda ko'proq o'qilishi mumkin deb hisoblanadi va uni amalga oshirish mumkin bo'lgan joyda for-har biridan foydalanish yaxshi amaliyot hisoblanadi. Biroq, har biri uchun odatdagidan ko'ra kamroq ko'p qirrali konstruktsiya. Bu erda har biridan foydalanish umuman ishlamaydigan yoki ishlamaydigan bir necha oddiy holatlar mavjud, ammo qiyinchilik bilan.-
Agar siz boshidan oxirigacha pastadirdan o'tmoqchi bo'lsangiz. Ya'ni, har bir kod uchun to'g'ridan-to'g'ri analog mavjud emas:
for (int i = array.length - 1; i >= 0; i--) { System.out.println(array[i]); }
-
Agar massivga o'zgartirish kiritmoqchi bo'lsangiz, har biri uchun mos emas. Masalan, massivni elementlarini almashtirmasdan tartiblash mumkin bo'lmaydi. Yoki quyidagi kodda massiv elementi emas, faqat iteratsiya o‘zgaruvchisi o‘zgaradi:
for (int itVar : array) { itVar = itVar++; }
-
Agar siz massivdagi elementni qidirayotgan bo'lsangiz va siz izlayotgan element indeksini qaytarishingiz (yoki o'tishingiz) kerak bo'lsa, muntazam for tsiklidan foydalanganingiz ma'qul.
JavaRush talabasi tomonidan tayyorlangan har biri haqida foydali video
JavaRush kursidagi tsikllarJavaRush-da biz Java Syntax kvestining 4-darajasida amalda tsikllardan foydalanishni boshlaymiz . Ularga bag'ishlangan bir nechta ma'ruzalar, shuningdek, ular bilan ishlash ko'nikmalarini mustahkamlash uchun turli darajadagi ko'plab vazifalar mavjud. Umuman olganda, siz ulardan qochib qutula olmaysiz, looplar dasturlashning eng muhim tuzilmalaridan biridir. |
for-her va looplar haqida ko'proq ma'lumot:
- For va For-Each Loop: men qanday takrorlaganim, takrorlaganim, lekin takrorlamaganim haqidagi ertak - Java-dagi har bir for va har bir tsikl haqida batafsil maqola. O'qitilgan o'quvchi uchun mo'ljallangan (taxminan JavaRush darajasi 10 va undan yuqori).
- Bayonot paytida . Maqola eng oddiy tsiklga bag'ishlangan bo'lib
while
, uning yordamida JavaRush-dagi tsikllar bilan tanishishni boshlaysiz. - Tsikllarni yozishni to'xtating! Java 8 da to'plamlar bilan ishlashning eng yaxshi 10 ta eng yaxshi usullari . Ushbu maqoladan JavaRush kursining yarmi yoki undan ko'prog'ini tugatgan talaba kollektsiyalar bilan ishlash haqida ko'p narsalarni bilib oladi.
GO TO FULL VERSION