logo

Smyčky v Javě

Smyčkování v programovacích jazycích je funkce, která usnadňuje provádění sady instrukcí/funkcí opakovaně, zatímco se některá podmínka vyhodnotí jako pravdivá. Java poskytuje tři způsoby provádění smyček. Zatímco všechny způsoby poskytují podobnou základní funkčnost, liší se svou syntaxí a dobou kontroly stavu.

java poskytuje tři typy podmíněných příkazů, tento druhý typ je příkaz smyčky.



  • while smyčka: Smyčka while je příkaz toku řízení, který umožňuje opakované provádění kódu na základě dané booleovské podmínky. Smyčku while si lze představit jako opakující se příkaz if.

Syntaxe:

while (boolean condition) { loop statements... }>

Jáva








/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main (String[] args) {> >int> i=>0>;> >while> (i<=>10>)> >{> >System.out.println(i);> >i++;> >}> >}> }>

>

>

Výstup

0 1 2 3 4 5 6 7 8 9 10>
  • Vývojový diagram: for-loop-in-java
    • Zatímco smyčka začíná kontrolou booleovské podmínky. Pokud je vyhodnocena jako true, pak jsou provedeny příkazy těla smyčky, jinak se provede první příkaz následující po cyklu. Z tohoto důvodu se také nazývá Vstupní regulační smyčka
    • Jakmile je podmínka vyhodnocena jako pravdivá, provedou se příkazy v těle smyčky. Normálně příkazy obsahují aktualizační hodnotu pro proměnnou zpracovávanou pro další iteraci.
    • Když se podmínka stane nepravdivou, smyčka se ukončí, což znamená konec jejího životního cyklu.
  • pro smyčku: for loop poskytuje stručný způsob zápisu struktury smyčky. Na rozdíl od smyčky while využívá příkaz for inicializaci, podmínku a přírůstek/snižování na jednom řádku, čímž poskytuje kratší, snadno laditelnou strukturu smyčkování.

Syntax:

for (initialization condition; testing condition;increment/decrement) { statement(s) }>

Jáva




/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main (String[] args) {> >for> (>int> i=>0>;i<=>10>;i++)> >{> >System.out.println(i);> >}> >}> }>

normalizace v databázi

>

>

Výstup

0 1 2 3 4 5 6 7 8 9 10>
  • Vývojový diagram:
    dělat, zatímco
      Inicializační podmínka: Zde inicializujeme používanou proměnnou. Označuje začátek cyklu for. Lze použít již deklarovanou proměnnou nebo lze deklarovat proměnnou, pouze lokálně do smyčky. Testovací podmínka: Používá se pro testování výstupní podmínky pro smyčku. Musí vrátit booleovskou hodnotu. To je také Vstupní řídicí smyčka protože podmínka je zkontrolována před provedením příkazů smyčky. Provádění příkazu: Jakmile je podmínka vyhodnocena jako pravdivá, provedou se příkazy v těle smyčky. Increment/Decrement: Používá se pro aktualizaci proměnné pro další iteraci. Ukončení smyčky: Když se podmínka stane nepravdivou, smyčka se ukončí a značí konec jejího životního cyklu.
  • dělat, zatímco: smyčka do while je podobná cyklu while s jediným rozdílem, že kontroluje podmínku po provedení příkazů, a proto je příkladem Ukončete ovládací smyčku.

Syntax:

do { statements.. } while (condition);>

Jáva




řetězec pro char v Javě
/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main (String[] args) {> >int> i=>0>;> >do> >{> >System.out.println(i);> >i++;> >}>while>(i<=>10>);> >}> }>

>

>

Výstup

0 1 2 3 4 5 6 7 8 9 10>
  • Vývojový diagram:
    • smyčka do while začíná provedením příkazu(ů). Napoprvé nedochází ke kontrole žádného stavu.
    • Po provedení příkazů a aktualizaci hodnoty proměnné je podmínka zkontrolována na hodnotu true nebo false. Pokud je vyhodnocena jako true, začne další iterace smyčky.
    • Když se podmínka stane nepravdivou, smyčka se ukončí, což znamená konec jejího životního cyklu.
    • Je důležité poznamenat, že smyčka do-while provede své příkazy alespoň jednou před kontrolou jakékoli podmínky, a proto je příkladem řídicí smyčky ukončení.

Úskalí smyček

    Nekonečná smyčka: Jednou z nejčastějších chyb při implementaci jakéhokoli druhu smyčky je, že se nemusí nikdy ukončit, to znamená, že smyčka běží nekonečně dlouho. K tomu dochází, když podmínka z nějakého důvodu selže. Příklady: Nekonečná smyčka for :

Jáva




/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >for> (;;) {> >}> >}> }>

>

>

nekonečná smyčka while:

Jáva




/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main (String[] args) {> >while> (>true>)> >{> >// statement> >}> > >}> }>

>

>

Jáva




//Java program to illustrate various pitfalls.> public> class> LooppitfallsDemo> {> >public> static> void> main(String[] args)> >{> >// infinite loop because condition is not apt> >// condition should have been i>0.> >for> (>int> i =>5>; i !=>0>; i -=>2>)> >{> >System.out.println(i);> >}> >int> x =>5>;> >// infinite loop because update statement> >// is not provided.> >while> (x ==>5>)> >{> >System.out.println('In the loop');> >}> >}> }>

>

>

Dalším úskalím je, že můžete něco přidávat do objektu sbírky pomocí smyčky a může vám dojít paměť. Pokud se pokusíte spustit níže uvedený program, po nějaké době bude vyvolána výjimka nedostatku paměti.

Jáva




//Java program for out of memory exception.> import> java.util.ArrayList;> public> class> Integer1> {> >public> static> void> main(String[] args)> >{> >ArrayList ar =>new> ArrayList();> >for> (>int> i =>0>; i { ar.add(i); } } }>

jak blokovat reklamy na youtube na android
>

>

Výstup:

Exception in thread 'main' java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Unknown Source) at java.util.Arrays.copyOf(Unknown Source) at java.util.ArrayList.grow(Unknown Source) at java.util.ArrayList.ensureCapacityInternal(Unknown Source) at java.util.ArrayList.add(Unknown Source) at article.Integer1.main(Integer1.java:9)>

Vnořená smyčka:

Vnořená smyčka znamená příkaz smyčky uvnitř jiného příkazu smyčky.

Existují různé kombinace použití smyčky pro smyčka, zatímco smyčka, dělat, zatímco smyčka.

Příklad 1 Vnořená smyčka for

Jáva




/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main (String[] args) {> >for>(>int> i =>0>; i <>3>; i++){> >for>(>int> j =>0>; j <>2>; j++){> >System.out.println(i);> >}> >System.out.println();> >}> >}> }>

gb vs mb
>

>

Výstup

0 0 1 1 2 2>

Příklad 2 Vnořená smyčka while

Jáva




import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >int> i =>1>, j =>1>;> >while> (i <=>3>) {> >while> (j <=>3>) {> >System.out.print(j);> >j++;> >}> >i++;> >System.out.println(>''>);> >j =>1>;> >}> >}> }>

>

>

Výstup

multithreading v Javě
123 123 123>

Příklad 3 Vnořená smyčka do while

Jáva




/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >int> row =>1>, column =>1>;> >int> x;> >do> {> >x =>4>;> >do> {> >System.out.print(>''>);> >x--;> >}>while> (x>= řádek);> >column =>1>;> >do> {> >System.out.print(column +>);> >column++;> >}>while> (column <=>5>);> >System.out.println(>);> >row++;> >}>while> (row <=>5>);> >}> }>

>

>

Výstup

1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5>

Př.4 Vnořená smyčka while a for

Jáva




/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >int> weeks =>3>;> >int> days =>7>;> >int> i =>1>;> >// outer loop> >while> (i <= weeks) {> >System.out.println(>'Week: '> + i);> >// inner loop> >for> (>int> j =>1>; j <= days; ++j) {> >System.out.println(>' Days: '> + j);> >}> >++i;> >}> >}> }>

>

>

Výstup

Week: 1 Days: 1 Days: 2 Days: 3 Days: 4 Days: 5 Days: 6 Days: 7 Week: 2 Days: 1 Days: 2 Days: 3 Days: 4 Days: 5 Days: 6 Days: 7 Week: 3 Days: 1 Days: 2 Days: 3 Days: 4 Days: 5 Days: 6 Days: 7>