Java тіліндегі foreach дегеніміз не?
For-each - массивтің немесе жинақтың барлық элементтерін өңдеу қажет болғанда пайдаланылатын for циклінің түрі. «Әрқайсысы үшін» ағылшын тілінен «барлығы үшін» деп аударылған. Шын мәнінде, бұл циклде foreach тіркесі қолданылмайды. Оның синтаксисі келесідей:for (type itVar : array)
{
Блок операторов;
}
Қай жерде type
қайталанатын айнымалының түрі (массивтегі деректер типімен бірдей!), itVar
оның аты, array
массив (сонымен қатар басқа деректер құрылымы болуы мүмкін, жинақтың қандай да бір түрі, мысалы ArrayList
), яғни цикл орындалатын an object. Көріп отырғаныңыздай, бұл дизайнда санауыш пайдаланылмайды; итерация айнымалысы индекс мәндерін емес, массивтің немесе жинақтың элементтерін қайталайды. Мұндай циклды орындаған кезде қайталанатын айнымалыға массивтің немесе жинақтың әрбір элементінің мәні ретімен тағайындалады, содан кейін операторлардың (немесе оператордың) көрсетілген блогы орындалады.
Әр циклден басқа Java-да forEach() әдісі де бар. Бұл туралы, мысалы, « Циклдарды жазуды тоқтатыңыз!» мақаласынан оқуға болады. Java 8 жинақтармен жұмыс істеудің ең жақсы 10 әдісі » |
for (int i=0; i<array.length; i++)
{
Блок операторов;
}
Java fore мысалы
Оқушылардың бағаларының массивін құрайық. Әрі қарай, for-әрқайсысын қолданып, біз барлық ұпайларды басып шығарамыз, орташа баллды көрсетеміз және максималды ұпайды табамыз.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));
}
}
Бағдарламаның шығуы:
All the grades: |5|10|7|8|9|9|10|12|
The highest grade is 12
The average grade is 8.75
Енді кәдімгі for циклі арқылы орындалған барлық ұпайларды басып шығару әдісі қандай болатынын көрейік:
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();
}
Бұл әдісті әдістен шақырсақ main
, нәтиже аламыз:
All the grades: |5|10|7|8|9|9|10|12|
Коллекциялары бар for-әр циклін пайдалану мысалы
Атаулар жинағын жасап, экранда барлық атауларды көрсетейік.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-әр циклінің шектеулері
for-each ықшам түрі for-ға қарағанда оқуға ыңғайлы болып саналады және оны орындауға болатын жерде for-ol пайдалану жақсы тәжірибе болып саналады. Дегенмен, for-each әдеттегі for-ға қарағанда әмбебап құрылым болып табылады. Міне, әрқайсысы үшін пайдалану мүлдем жұмыс істемейтін немесе жұмыс істейтін, бірақ қиын болатын бірнеше қарапайым жағдайлар.-
Егер сіз соңынан басына дейін цикл арқылы өткіңіз келсе. Яғни, келесі codeтың әрқайсысы үшін тікелей аналогы жоқ:
for (int i = array.length - 1; i >= 0; i--) { System.out.println(array[i]); }
-
Массивке өзгертулер енгізгіңіз келсе, әрқайсысы үшін қолайлы емес. Мысалы, массив элементтерін ауыстырмай сұрыптау мүмкін болмайды. Немесе келесі codeта массив элементі емес, тек итерация айнымалысы өзгереді:
for (int itVar : array) { itVar = itVar++; }
-
Егер сіз массивте элементті іздеп жатсаңыз және сіз іздеген элементтің индексін қайтару (немесе беру) қажет болса, тұрақты for циклін қолданған дұрыс.
JavaRush студенті дайындаған әрқайсысы туралы пайдалы бейне
JavaRush курсындағы циклдарJavaRush бағдарламасында біз Java синтаксисі квестінің 4 деңгейінде циклдерді тәжірибеде пайдалана бастаймыз . Оларға арналған бірнеше лекциялар, сонымен қатар олармен жұмыс істеу дағдыларын нығайту үшін әртүрлі деңгейдегі көптеген тапсырмалар бар. Жалпы, сіз олардан құтыла алмайсыз; циклдар бағдарламалаудағы ең маңызды құрылымдардың бірі болып табылады. |
for-her және циклдер туралы толығырақ:
- For және For-Each циклі: қалай қайталағаным, қайталағаным, бірақ қайталамағаным туралы ертегі - Java тіліндегі for және for-her циклдері туралы жақсы егжей-тегжейлі мақала. Оқытылған оқырманға арналған (шамамен JavaRush деңгейі 10 және одан жоғары).
- Мәлімдеме кезінде .
while
Мақала JavaRush-те циклдермен танысуды бастайтын қарапайым циклге арналған . - Жазу циклдарын тоқтатыңыз! Java 8-де жинақтармен жұмыс істеудің ең жақсы 10 әдісі . Бұл мақаладан курстың жартысын немесе одан да көп курсын аяқтаған JavaRush студенті жинақтармен жұмыс істеу туралы көп нәрсені үйренеді.
GO TO FULL VERSION