Java ҳангоми давр



Java

Java while loop як изҳороти дигари идоракунии ҳалқа мебошад, ки маҷмӯи изҳоротро дар асоси шарти додашуда иҷро мекунад. Дар ин дастур, мо дар бораи java while loop муфассал муҳокима хоҳем кард. Ҳангоми муқоиса барои ҳалқа, дар ҳоле ки ҳалқа ягон шумораи такроршаванда надорад. Баръакс for ҳалқа, доираи тағирёбандае, ки дар Java истифода мешавад, дар давра дар ҳалқа маҳдуд намешавад, зеро мо тағирёбандаро берун аз ҳалқа эълон мекунем.

Java ҳангоми синтаксиси ҳалқа

while(test_expression) {
  //code
  update_counter;//update the variable value used in the test_expression
}

экспресс-баён - Ин ҳолат ё ибораест, ки дар асоси он ҳалқаи while иҷро карда мешавад. Агар шарт дуруст бошад, он рамзро дар доираи ҳалқаи while иҷро мекунад. Агар он дурӯғ бошад, он аз ҳалқаи while мебарояд.

навсозӣ - Ин барои нав кардани арзиши тағирёбанда, ки дар ҳолати java while loop истифода мешавад. Агар мо инро муайян накунем, он метавонад боиси ҳалқаи беохир гардад.

Чӣ гуна дар ҳоле ки ҳалқа кор мекунад

Дар ҷадвали зер нишон медиҳад, ки чӣ гуна java while ҳалқа кор мекунад.

Java ҳангоми ҳалқа

 

  • Вақте ки идоракунии иҷро ба изҳороти while ишора мекунад, аввал он шарт ё ифодаи санҷиширо арзёбӣ мекунад. Шарт метавонад ҳар гуна намуди бошад оператор.
  • Агар шарт а баргардад ҳақиқӣ арзиш, он рамзро дар дохили ҳалқаи while иҷро мекунад.
  • Он гоҳ навсозиҳои арзиши тағирёбанда тағирёбандаро афзоиш медиҳад ё кам мекунад. Ворид кардани ин рамз дар дохили java while loop муҳим аст, дар акси ҳол, он метавонад боиси ҳалқаи ҷавфилии бепоён гардад. Мо ҳалқаи беохирро дар охири омӯзиш муҳокима хоҳем кард.
  • Боз назорат ба изҳороти while ишора мекунад ва қадамҳои болоро такрор мекунад.
  • Вақте ки шарт бармегардад бардурӯғ аҳамият, он аз java while давра мебарояд ва бо иҷрои изҳорот берун аз ҳалқаи while давом мекунад

Мисоли оддии Java ҳангоми ҳалқа

Дар зер коди оддӣ оварда шудааст, ки java while loop -ро нишон медиҳад.

public class simpleWhileLoopDemo {

  public static void main(String[] args) {
    int i=1;
    while(i<=5) {
      System.out.println("Value of i is: " + i);
      i++;
    }

  }

}
Value of i is: 1
Value of i is: 2
Value of i is: 3
Value of i is: 4
Value of i is: 5

Мо аввал тағирёбандаи int эълон мекунем i ва бо арзиши 1 оғоз намоед. Дар ҳолати while мо ифодаи as –ро дорем i <= 5, ки маънои то i арзиш камтар ё ба 5 баробар аст, он ҳалқаро иҷро мекунад.

Аз ин рӯ, дар такрори 1, вақте ки i = 1, шарт дуруст аст ва изҳоротро дар дохили java while loop чоп мекунад. Он гоҳ афзоиш меёбад i арзиши 1 бо маънои онро дорад, ки ҳоло i = 2.

Он гоҳ бори дигар санҷида мешавад, ки оё i <= 5. Азбаски ин дуруст аст, он боз рамзи дохили ҳалқаро иҷро мекунад ва қиматро афзоиш медиҳад.

Он қадамҳои дар боло зикршударо то он дам такрор мекунад i = 5. Дар ин марҳила, пас аз иҷрои рамзи дохили while loop, i афзоишҳои арзиш ва i = 6. Акнун шарт бардурӯғро бармегардонад ва аз ин рӯ, java while loop мебарояд.

Ҳангоми давр дар Массив

Ба монанди for loop, мо инчунин метавонем java while loop -ро барои гирифтани унсурҳои массив истифода барем. Дар мисоли поён, мо унсурҳои массивро меоварем ва суммаи ҳамаи рақамҳоро бо ёрии ҳалқаи while пайдо мекунем.

public class whileLoopArray {

  public static void main(String[] args) {
    int[] numbers = {20,10,40,50,30};
    int i=0;
    int sum=0;
    while(i<numbers.length) {
      sum = sum+numbers[i];
      i=i+1;
    }
    System.out.println("Sum of array elements: " + sum);
    System.out.println("Length of array: " + i);
  }

}
Sum of array elements: 150
Length of array: 5

Шарҳ:

Аввалан, мо массиви бутунро оғоз мекунем рақамҳои ва java while counter loop эълон кунед тағйирёбанда i. Азбаски он массив аст, мо бояд тамоми унсурҳои массивро то унсури охирин тай кунем. Барои ин, мо дарозиро истифода мебарем метод дар дохили Java ҳангоми ҳолати ҳалқа. Ин маънои онро дорад, ки ҳалқаи while то иҷро мешавад i арзиш ба дарозии массив мерасад.

Такрори 1 ҳангоми i = 0: ҳолат: true, sum = 20, i = 1

Такрори 2 ҳангоми i = 1: ҳолат: true, sum = 30, i = 2

Такрори 3 ҳангоми i = 2: ҳолат: true, sum = 70, i = 3

Такрори 4 ҳангоми i = 3: ҳолат: true, sum = 120, i = 4

Такрори 5 ҳангоми i = 4: ҳолат: true, sum = 150, i = 5

Такрори 6 ҳангоми i = 5: шарт: false -> баромадан while Давр

Лутфан ба мо муроҷиат кунед Массивҳо дар Java дарсӣ барои маълумоти бештар дар бораи массивҳо.

Ҳангоми ҳалқа беохир

Тавре ки дар оғози дастур муҳокима карда шуд, вақте ки мо тағирёбандаи ҳисобкунакро дуруст навсозӣ намекунем ё шартро дуруст қайд намекунем, он ба беохир оварда мерасонад while ҳалқа Биёед инро бо мисоли зер бубинем.

public class infiniteWhileLoop {

  public static void main(String[] args) {
    int i = 0;
    while(i>=0) {
      System.out.println(i);
      i++;
    }

  }

}

Дар ин ҷо, мо тағирёбандаро оғоз кардем бо арзиши 0. Дар java while loop, мо месанҷем, ки оё i арзиш аз 0 ё баробар зиёдтар аст, зеро мо афзоиш медиҳем i арзиш дар дохили ҳалқаи while, шарт i> = 0 дар ҳоле ки ҳамеша бармегардад а ҳақиқӣ арзиш дорад ва беохир иҷро хоҳад кард.

Мо инчунин метавонем бо як тарзи дигар Java-и бепоён дошта бошем, тавре ки шумо дар мисоли зер мебинед. Дар ин ҷо арзиши тағирёбанда bFlag ҳамеша дуруст аст, зеро мо арзиши тағирёбандаро навсозӣ намекунем.

public class infiniteWhileLoop {

  public static void main(String[] args) {
    Boolean bFlag = true;
    while(bFlag) {
      System.out.println("Infinite loop");
    }

  }

}

Аз ин рӯ, java беохир ҳангоми ҳалқа дар зери 2 шарт рух медиҳад. Ҳангоми истифодаи ҳалқаи while ҳамеша ин 2 нуктаро дар хотир доштан муҳим аст.

  • вақте ки мо арзиши тағирёбандаро навсозӣ намекунем
  • вақте ки мо шартро дар while loop дуруст истифода намебарем

Ҳангоми ҳалқа ҷойгир карда шудааст

Мо инчунин метавонем дар дохили Java монанд дошта бошем for ҳалқа Вақте ки ҳалқаҳо дар вақти зиёданд, мо онро ҳамчун ҳалқаи лона ҷойгир мекунем.

public class Nestedwhileloop {

  public static void main(String[] args) {
    int i=1,j=10;
    while(i<=5) {
      System.out.println("i: " + i);
      i++;
      while(j>=5) {
        System.out.println("j: " + j);
        j--;
      }
    }

  }

}
i: 1
j: 10
j: 9
j: 8
j: 7
j: 6
j: 5
i: 2
i: 3
i: 4
i: 5

Дар ин мисол, мо 2 дар ҳоле ки ҳалқаҳо дорем. Дар ҳалқаи беруна ҳоле такрор мешавад, то i <= 5 ва ботинӣ while loop такрор мешавад то j> = 5.

Кай i = 1, шарт дуруст аст ва чоп мекунад i арзиш ва пас афзоишҳо i Арзиш аз 1. Пас, он ҳалқаи ботиниро ҳангоми арзон иҷро мекунад j = 10. Азбаски шарт j> = 5 дуруст аст, он арзиши j -ро чоп мекунад. Ҳоло, он иҷрои ҳалқаи ботиниро дар дохили он пурра то шарт идома медиҳад j> = 5 бардурӯғ бармегардад. Пас аз он, ки он дурӯғ аст, он бо иҷрои беруна ҳангоми иҷрои давр то давом мекунад i <= 5 бардурӯғ бармегардад.

Ин аст, ки чаро шумо метавонед пас аз чоп дидед i = 1, он ҳама иҷро мекунад j арзишҳо бо j = 10 то j = 5 ва сипас чоп мекунад i арзишҳо то i = 5. Кай i = 2, он ботинро иҷро намекунад while давра, зеро шарт нодуруст аст.

Java дар ҳоле ки ҳалқа бо шароити гуногун

Мо метавонем бо якчанд тағирёбандаҳо дар дохили java while loop якчанд шарт дошта бошем. Дар мисоли зер, мо 2 тағирёбанда дорем a ва i Мо ин рақамҳои ҷуфтро дар байни 0 ва 0 чоп мекунем. Барои ин дар дохили java while loop мо шарт дорем a <= 10, ки ин танҳо як тағирёбанда ҳисобкунак ва шарти дигар аст ((i% 2) == 0) барои санҷидани он, ки ин рақами ҷуфт аст ё не. Дар дохили java while loop, мо тағирёбандаи ҳисобро зиёд мекунем a аз ҷониби 1 ва i арзиш 2.

public class Whileloopconditions {

  public static void main(String[] args) {
    int a = 0;
    int i = 0;
    System.out.println("Even numbers between 0 to 20:");
    while((a<=10) && ((i%2)==0)) {
      System.out.println(i);
      a++;
      i=i+2;
    }
  }

}
Even numbers between 0 to 20:
0
2
4
6
8
10
12
14
16
18
20

ишора