Gyakorlati alapok

A kapcsos zárójel-probléma

 

Az előző, Ágyazzunk be a for ciklusnak! (az egybeágyazott for ciklusok) című fejezet egybeágyazott for ciklusok működését mutatta meg, amely során a kódban több kódszint is keletkezett, azaz létrejöttek külső és belső ciklusszintek. Nevezhetjük ezeket műveleti blokkszinteknek is. Bevezetésképpen ismételjük meg az egyik ilyen többszintű kódot:

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
    public static void main(String[] args) {
    for(int i = 1; i <= 3; i++){
        System.out.print("F" + i + " ");
        for(int j = 1; j <= 3; j++){
            System.out.print("B" + i + " ");
            for(int k = 1; k <= 3; k++){
                System.out.print("BB" + i + " ");
                for(int l = 1; l <= 3; l++){
                    System.out.print("BBB" + i + " ");
                    }
                }
            }
        }
    }
}

 

Végeredmény főciklusonként szétbontva:

  1. F1

  2. B1

  3. BB1

  4. BBB1 BBB1 BBB1

  5. BB1

  6. BBB1 BBB1 BBB1

  7. BB1

  8. BBB1 BBB1 BBB1

  9. B1

  10. BB1

  11. BBB1 BBB1 BBB1

  12. BB1

  13. BBB1 BBB1 BBB1

  14. BB1

  15. BBB1 BBB1 BBB1

  16. B1

  17. BB1

  18. BBB1 BBB1 BBB1

  19. BB1

  20. BBB1 BBB1 BBB1

  21. BB1

  22. BBB1 BBB1 BBB1

1 db főciklus-sorozat tehát 22 ciklusból áll. A további sorozat:

  • F2 B2 BB2 BBB2 BBB2 BBB2 BB2 BBB2 BBB2 BBB2 BB2 BBB2 BBB2 BBB2 B2 BB2 BBB2 BBB2 BBB2 BB2 BBB2 BBB2 BBB2 BB2 BBB2 BBB2 BBB2 B2 BB2 BBB2 BBB2 BBB2 BB2 BBB2 BBB2 BBB2 BB2 BBB2 BBB2 BBB2

  • F3 B3 BB3 BBB3 BBB3 BBB3 BB3 BBB3 BBB3 BBB3 BB3 BBB3 BBB3 BBB3 B3 BB3 BBB3 BBB3 BBB3 BB3 BBB3 BBB3 BBB3 BB3 BBB3 BBB3 BBB3 B3 BB3 BBB3 BBB3 BBB3 BB3 BBB3 BBB3 BBB3 BB3 BBB3 BBB3 BBB3

A kódszinteket a kapcsos zárójelek mutatják meg (square braces vagy square brackets), amelyek elsődleges feladata tehát a műveleti blokkok behatárolása. Nézzük meg a fenti kód szintjeit csakis kapcsos zárójelekkel:

 

{

    {

        {

            {

                {

                    {

 

                    }

                }

            }

        }

    }

}

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Jól látható, hogy a kapcsos zárójelek mindig párban vannak (1 nyitó + 1 záró). Ha azonban a blokkokat rosszul határoljuk, akkor valahonnan hiányozni fog egy nyitó vagy záró kapcsos zárójel. Ez szinte az egyik legtipikusabb fordítási hibát fogja eredményezni. A hiba fennállásáig a kódot nem is tudjuk futtatni, a hibaüzenet egy piros körön belül fehér x és a következő szöveg lesz:

 

Syntax error, insert "}" to complete ClassBody.

 

A hiba megoldására több lehetőségünk is van:

  • az Eclipse rendelkezik némi kódautomatikával, tehát ha blokkot kezdünk egy nyitó kapcsos zárójellel ({), akkor legtöbbször inzertál egy zárót is (}),

  • lehetőségünk van egész műveleti blokkok automatikus inzertálására is a Source - Surround With parancsok kiadásával,

  • s talán a legpraktikusabb megoldás: adott záró kapcsos zárójel fölé helyezve a kurzort, sárga téglalapban meg fog jelenni az egész behatárolt műveleti blokk.