JavaRush /Java блогу /Random-KY /Javaдагы ар бир цикл үчүн

Javaдагы ар бир цикл үчүн

Группада жарыяланган

Java'да foreach деген эмне?

For-each - бул массивдин же коллекциянын бардык элементтерин иштетүү керек болгондо колдонулуучу циклдин бир түрү. "Ар бир үчүн" англис тorнен "бардыгы үчүн" деп которулган. Чынында, бул циклде foreach фразасы колдонулbyte. Анын синтаксиси төмөнкүдөй:
for (type itVar : array)
{
    Блок операторов;
}
Кайталануучу өзгөрмөнүн түрү кайда type(массивдеги маалымат типине окшош!), itVarанын аты, arrayмассив (башка маалымат структурасы, кандайдыр бир коллекция болушу мүмкүн, мисалы ArrayList), б.а. цикл аткарылган an object. Көрүнүп тургандай, бул дизайнда эсептегич колдонулbyte; итерация өзгөрмөсү индекстин маанилерине эмес, массивдин же коллекциянын элементтери боюнча кайталанат. Мындай циклди аткарууда итерация өзгөрмөсүнө массивдин же коллекциянын ар бир элементинин мааниси ырааттуу түрдө ыйгарылат, андан кийин операторлордун (же оператордун) көрсөтүлгөн блогу аткарылат.

Ар бир циклден тышкары, Java да forEach() ыкмасына ээ. Бул тууралуу, мисалы, макаладан окуй аласыз " Циклдерди жазууну токтот!" Java 8деги коллекциялар менен иштөөнүн эң мыкты 10 ыкмасы

Көңүл буруңуз:for-each циклин java.lang.Iterable интерфейсин ишке ашырган массивдерге жана каалаган класстарга колдонсо болот. Жогорудагы codeдун эквиваленти төмөнкү for loop болот :
for (int i=0; i<array.length; i++)
{

    Блок операторов;
}

Java foreach мисалы

Студенттердин бааларынын массивдерин түзөлү. Андан кийин, ар бири үчүн, биз бардык упайларды басып чыгарабыз, орточо баллды көрсөтөбүз жана максималдуу баллды табабыз.
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|

Коллекциялар менен ар бир циклди колдонуунун мисалы

Келгиле, аттардын коллекциясын түзүп, бардык ысымдарды экранга чыгаралы.
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-ar биринин компакт формасы for-a караганда окууга ылайыктуу болуп эсептелет жана аны жасоого мүмкүн болгон жерде for-ди колдонуу жакшы практика болуп эсептелет. Бирок, ар бири үчүн кадимки конструкцияга караганда азыраак универсалдуу түзүлүш. Бул жерде ар бири үчүн колдонуу такыр иштебей турган же иштей турган бир нече жөнөкөй учурлар бар, бирок кыйынчылык менен.
  1. Эгер сиз башынан аягына чейин цикл аркылуу өтүүнү кааласаңыз. Башкача айтканда, төмөнкү codeдун ар бир аналогу түз жок:

    for (int i = array.length - 1; i >= 0; i--)
    {
          System.out.println(array[i]);
    }
  2. Массивге өзгөртүүлөрдү киргизгиңиз келсе, ар бири үчүн ылайыктуу эмес. Мисалы, массивди анын элементтерин алмаштырбастан сорттоо мүмкүн эмес. Же төмөнкү codeдо массивдин элементи эмес, кайталануучу өзгөрмө гана өзгөрөт:

    for (int itVar : array)
    {
        itVar = itVar++;
    }
  3. Эгерде сиз массивдеги элементти издеп жатсаңыз жана сиз издеп жаткан элементтин индексин кайтаруу (же берүү) керек болсо, анда кадимки for циклин колдонгонуңуз жакшы.

JavaRush студенти тарабынан даярдалган ар бири жөнүндө пайдалуу видео

JavaRush курсундагы циклдер

JavaRushта биз Java Syntax квестинин 4-деңгээлинде циклдерди практикада колдоно баштайбыз . Аларга бир нече лекциялар, ошондой эле алар менен иштөөнүн көндүмдөрүн бекемдөө боюнча ар кандай деңгээлдеги көптөгөн тапшырмалар берилген. Жалпысынан, сиз алардан качып кутула албайсыз; циклдер программалоодогу эң маанилүү конструкциялардын бири.

for-her жана циклдер жөнүндө көбүрөөк маалымат:

  1. For and For-Each цикли: мен кантип итерациялаганым, кайталанганым, бирок кайталанбаганым жөнүндөгү жомок - Javaдагы for жана for-ар бир циклдер жөнүндө жакшы деталдаштырылган макала. Даярдалган окурман үчүн иштелип чыккан (болжол менен JavaRush деңгээли 10 жана андан жогору).
  2. Билдирүүдө . Макала эң жөнөкөй циклге арналган while, анын жардамы менен сиз JavaRush ичиндеги циклдер менен тааныша баштайсыз.
  3. Жазууну токтоткула! Java 8 коллекциялары менен иштөө үчүн эң мыкты 10 ыкма . Бул макаладан JavaRush курсунун жарымын же андан көп курсун аяктаган студент коллекциялар менен иштөө боюнча көп нерсени үйрөнөт.
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION