JavaRush /Blog Jawa /Random-JV /While Loop in Java

While Loop in Java

Diterbitake ing grup

Pambuka

Program pisanan kita yaiku urutan instruksi sing dileksanakake siji-sijine. Ora ana garpu. Iki HelloWorld, sing ngasilake frase salam lan petungan aritmetika menyang konsol. Sawise program pisanan, kita sinau kanggo cabang, yaiku, program nindakake tumindak tartamtu gumantung ing kahanan. Mangkene carane sampeyan bisa menehi kode AC supaya bisa dadi panas lan adhem:
if (tempRoom>tempComfort)
    airConditionerOn();
if (tempRoom<tempComfort
    heaterOn();
Ayo dadi njupuk langkah sabanjure. Ing saben dinten gesang kita asring nindakake monoton, tumindak bola-bali, contone, peeling apel kanggo pai. Proses menarik iki bisa diterangake minangka:
  1. Yen ana apel ing cekungan, tindakake langkah 1.1 nganti 1.4:

    1. 1.1. Njupuk apel
    2. 1.2. Resik lan Cut menyang irisan-irisan
    3. 1.3. Selehake ing dasar kue kue ing wajan
    4. 1.4. Ayo bali menyang langkah 1.
Operator while - 2
Contone, sampeyan duwe 10 apel, 2 tangan lan siji piso. Ing urip, sampeyan terus-terusan ngresiki kabeh sepuluh, dipandu dening algoritma sing padha. Kepiye sampeyan bisa nggawe program nindakake tumindak sing bola-bali karo saben apel?
  • Ayo kita nggandhengake jumlah apel, nanging yen kita duwe sawetara, sawetara prentah bakal ditindakake kanthi sia-sia tanpa "muatan" (lan, bisa uga, kita bakal ngethok awake dhewe nalika ngupas apel sing ora ana).
  • Yen ana luwih akeh apel tinimbang tim pangolahan kita, sawetara produk bakal ora diproses.
  • "Kode" kuwi angel diwaca, ngemot akeh pengulangan, lan angel diowahi.

Loops minangka operator kanggo nindakake tumindak kaping pirang-pirang.

The Java while loop (vile loop) bisa digunakake kanthi apik ing kasus kita. Desain iki ngatur macem-macem tumindak dadi struktur ringkes lan bisa dingerteni. Algoritma sauntara kanggo ngiris apel kanggo pie ing Jawa bisa katon kaya iki:
while(числоЯблокВТазике>0) {
    яблоко = тазик.взятьОчередноеЯблоко();
    положитьВПирог(яблоко.чистить().нарезать());
    числоЯблокВТазике--;//-- this is a decrement, reduces the number of apples by one
}
System.out.println('Apples for the pie are processed.');

Sintaks perintah

Cara pisanan kanggo njlèntrèhaké statement while kaya ing ngisor iki:
while(Логическое выражение) {
	// Loop body - periodically executed statement(s)
}
Iki ditindakake kaya ing ngisor iki (langkah demi langkah):
  1. Kita ngevaluasi kondisi Boolean sing nderek nalika ing kurung.
  2. Yen kondisi logis bener, banjur operator ing awak loop dieksekusi, sawise nglakokake operator pungkasan ing awak loop, pindhah menyang langkah 1
  3. Yen kondisi logis salah, banjur pindhah menyang statement pisanan njaba loop nalika.

Loop karo prasyarat

Wiwit sadurunge nglakokake awak loop, kita tansah ngetung ekspresi logis (kondisi kanggo ngetik loop), jinis nalika iki asring diarani loop kanthi prasyarat. Ayo gawe tabel saka sepuluh integer pisanan, kekuwatan positif saka nomer:
public static void main(String[] args) {
    int number = 3; // Number to be raised to a power
    int result = 1; // Result of exponentiation
    int power = 1; // Initial exponent
    while(power <= 10) { // loop entry condition
        result = result * number;
        System.out.println(number + "to the extent" + power + " = " + result);
        power++;
    }
}
Hasil output konsol:
3 в степени 1 = 3
3 в степени 2 = 9
3 в степени 3 = 27
3 в степени 4 = 81
3 в степени 5 = 243
3 в степени 6 = 729
3 в степени 7 = 2187
3 в степени 8 = 6561
3 в степени 9 = 19683
3 в степени 10 = 59049
Process finished with exit code 0

Loop karo postcondition

Jenis siklus kapindho:
do {
    // Loop body - periodically executed statement(s)
}while (Логическое выражение);
Dilaksanakake kaya ing ngisor iki (langkah-langkah):
  1. Badan loop dieksekusi (langsung sawise tembung kunci do).
  2. Kita ngevaluasi kondisi Boolean sing nderek nalika ing kurung.
  3. Yen kondisi logis bener, banjur pindhah menyang langkah 1
  4. Yen kondisi logis salah, banjur pindhah menyang statement pisanan njaba loop nalika.
Rong prabédan utama saka jinis loop sadurunge: awak loop dieksekusi paling ora sapisan lan kondisi logis dicenthang sawise awak loop dieksekusi. Mulane, jinis while loop iki diarani postcondition loop. Wektu iki kita bakal nampilake tabel kekuwatan nomer ora ngluwihi 10000:
public static void main(String[] args) {
    int number = 3;// Number to be raised to a power
    int result = number;// Result of exponentiation
    int power = 1;// Initial exponent
    do {
        System.out.println(number + "to the extent" + power + " = " + result);
        power++;
        result = result * number;
    }while (result < 10000); // loop exit condition
Hasil output konsol:
3 в степени 1 = 3
3 в степени 2 = 9
3 в степени 3 = 27
3 в степени 4 = 81
3 в степени 5 = 243
3 в степени 6 = 729
3 в степени 7 = 2187
3 в степени 8 = 6561
Process finished with exit code 0
Priksa manawa owah-owahan ing kode kasebut, mbandhingake karo versi loop kanthi prasyarat.

Kasunyatan sing menarik babagan nggarap puteran

Kontrol printah ing awak daur ulang

Ana rong prentah sing mengaruhi kemajuan loop: break, fitur sing bakal dituduhake ing bab sabanjure, lan terus.
  • terus - mungkasi eksekusi awak daur ulang saiki lan pindhah menyang ekspresi logis saka operator nalika. Yen ekspresi sing diwilang bener, eksekusi loop bakal terus.
  • break - langsung mungkasi eksekusi daur ulang saiki lan mlumpat menyang printah pisanan ing njaba. Mangkono, eksekusi loop saiki diselani. Kita bakal nliti kanthi luwih rinci ing topik sabanjure.
Ayo padha elinga conto woh kita. Yen kita ora yakin babagan kualitas apel sing ditawakake, kita bisa ngganti kode nggunakake printah continue:
while(числоЯблокВТазике>0) {
    яблоко = тазик.взятьОчередноеЯблоко();
    числоЯблокВТазике--;//-- this is a decrement, reduces the number of apples by one
    if (яблоко.плохое()) {  // method will return true for rotten, etc. apples
        яблоко.выкинутьВМусор();
        continue; // continue the loop, go to the condition number ofApplesIn the Basin>0
    }
    положитьВПирог(яблоко.чистить().нарезать());
}
Konstruksi kasebut continueasring digunakake nalika ana ing awak daur ulang kudu nglakokake prentah nalika ana kahanan tartamtu, umpamane, kanggo nindakake tumindak nalika sensor ing peralatan dipicu (yen ora, terusake siklus maca indikator kasebut) utawa kanggo ngetung ekspresi mung ing langkah-langkah tartamtu saka siklus. Conto kanggo kasus pungkasan yaiku pitungan ing daur ulang saka jumlah kubus nomer alam sing kothak kurang saka nomer kasebut:
public static void main(String[] args) {
    int sum = 0;    // total amount
    int i = 0;      // starting number of the row
    int count = 20; // amount of numbers
    while(i<=count) {
        i++;        // take the next number, i++ is equivalent to i=i+1
        if (i*i<=count)  // if the square of the number is less
            continue;   // number of numbers - do not count the sum
                        // move on to the next number in the loop
        sum += i*i*i; // otherwise, we calculate the sum of cubes of numbers
    } // sum += i*i*i - notation similar to sum = sum + i*i*i
    System.out.println(sum);// print result
}

Siklus tanpa wates

Perintah kontrol iki paling kerep digunakake ing daur ulang tanpa wates. Iki diarani amarga kondisi metu logis ora tau wareg. Ing kode katon kaya:
while(true) {
    // Loop body
}
breakIng kasus iki, nggunakake printah kanggo ngatur metu saka iku bakal migunani . Gelung jinis iki kedadeyan nalika nunggu kondisi eksternal sing dibentuk ing njaba logika awak loop. Contone, ing game sing niru donya virtual sak pahlawan (metu saka daur ulang = metu saka game), sistem operasi. Utawa nalika nggunakake kalkulus, mbok menawa nambah asil karo saben telpon sakteruse ing daur ulang, nanging matesi wong dening wektu utawa kedadeyan saka acara external (checkers, catur utawa prakiraan cuaca). Sampeyan kudu eling yen ing kahanan normal, puteran tanpa wates minangka salah sawijining masalah ketidakstabilan program. Kanggo nduduhake, ayo bali menyang kekuwatan nomer:
public static void main(String[] args) {
    int number = 3; // Number to be raised to a power
    int result = 1; // Result of exponentiation
    int power = 1; // Initial exponent
    while(true) {
        result = result * number;
        System.out.println(number + "to the extent" + power + " = " + result);
        power++;
        if (power>10)
            break; // exit from the loop
    }
}
Hasil output konsol:
3 в степени 1 = 3
3 в степени 2 = 9
3 в степени 3 = 27
3 в степени 4 = 81
3 в степени 5 = 243
3 в степени 6 = 729
3 в степени 7 = 2187
3 в степени 8 = 6561
3 в степени 9 = 19683
3 в степени 10 = 59049
Process finished with exit code 0

Nested Loops

Kene kita teka menyang topik pungkasan babagan siklus kita. Ayo dipikirake babagan pai apel (muga-muga sampeyan ora keluwen saiki) lan "loop" kita:
  1. Yen ana apel ing cekungan, tindakake langkah 1.1 nganti 1.4:

    1. 1.1. Njupuk apel
    2. 1.2. Resik lan Cut menyang irisan-irisan
    3. 1.3. Selehake ing dasar kue kue ing wajan
    4. 1.4. Ayo bali menyang langkah 1.
Ayo kita njlèntrèhaké kanthi luwih rinci proses nglereni menyang irisan:
  1. Jumlah irisan = 0
  2. Nalika jumlah irisan <12, tindakake langkah 2.1 nganti 2.3

    1. 2.1. Cut irisan liyane saka apel
    2. 2.2. Jumlah irisan ++
    3. 2.3. Bali menyang langkah 2
Lan lebokake menyang algoritma confectionery kita:
  1. Yen ana apel ing cekungan, tindakake langkah 1.1 nganti 1.6:

    1. 1.1. Njupuk apel
    2. 1.2. Kupas
    3. 1.3. Jumlah irisan = 0
    4. 1.4. Пока число долек < 12, выполнить шаги с 1.4.1 по 1.4.3
      1. 1.4.1. Отрезать очередную дольку от яблока
      2. 1.4.2. Кол-во долек ++
      3. 1.4.3. Возвращаемся на шаг 1.4
    5. 1.5. Помещаем дольки на тестовое основание пирога из теста на сковороде
    6. 1.6. Возвращаемся на шаг 1.
Получor цикл в цикле. Подобные конструкции весьма частые. Для завершающего примера построим таблицу умножения, которые школьники 90-х видели на обложках тетрадей в младших классах.
Operator while - 3
public static void main(String[] args) {
    // Display the values ​​of the second multiplier in the line
    System.out.println("    2  3  4  5  6  7  8  9");
    int i = 2;      // first multiplier, assign starting value
    while(i<10) {   // First loop, execute while the first multiplier is less than 10
        System.out.print(i + " | ");// Display the first multiplier at the beginning of the string
        int j = 2;                  // second multiplier, starting value
        while (j<10) { // Second loop, execute while the second multiplier is less than 10
            int mul=i*j; // Calculate the product of factors
            if (mul<10)  // If it contains one digit, print two spaces after it
                System.out.print(mul + "  ");
            else   // otherwise output the product and after it - one space
                System.out.print(mul + " ");
            j++;     // Increase the second multiplier by one,
        }            // Go to the beginning of the second loop (while (j<10 ).... )
        System.out.println(); // Move to the next line of output
        i++;                  // Increase the first multiplier by one,
    }                         // Go to the beginning of the first loop (while ( i<10 ) ....
}
Результат вывода на консоль:
2  3  4  5  6  7  8  9
2 | 4 6 8 10 12 14 16 18
3 | 6 9 12 15 18 21 24 27
4 | 8 12 16 20 24 28 32 36
5 | 10 15 20 25 30 35 40 45
6 | 12 18 24 30 36 42 48 54
7 | 14 21 28 35 42 49 56 63
8 | 16 24 32 40 48 56 64 72
9 | 18 27 36 45 54 63 72 81
Process finished with exit code 0
Циклы (в частности, оператор while) – один из фундаментальных кирпичиков построения программ. Решая задачи на JavaRush, вы изучите все их разнообразие, разберёте тонкости функционирования и получите практические навыки их применения.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION