Java - break izjave


Dok radite s petljama, ponekad je poželjno preskočiti neke izjave unutar petlje ili odmah prekinuti petlju bez provjere testnog izraza. U takvim se slučajevima koriste iskazi break i continue. Break izjava u Javi odmah prekida petlju, a kontrola programa prelazi na sljedeću izjavu koja sljedi nakon petlje. Gotovo se uvijek koristi u izjavama za donošenje odluka (if...else izjave). Pogledajmo sintaksu break izjave u Javi:

break;


Kako funkcioniše break izjava?



Primjer 1: Java break izjava

class Test {
    public static void main(String[] args) {
      
        // for petlja
        for (int i = 1; i <= 10; ++i) {

            // Ako je vrijednost i 5, petlja prestaje s radom
            if (i == 5) {
                break;
            }      
            System.out.println(i);
        }   
    }
}

U gornjem programu koristimo for petlju za ispis vrijednosti i u svakoj iteraciji. Da biste saznali kako for petlja funkcioniše, pogledajte lekciju for petlja. Pogledajmo sljedeću izjavu:

if (i == 5) {
    break;
}

Ovo znači da kada je vrijednost i jednaka 5 petlja prestaje s radom. Zbog toga dobijamo izlaz s vrijednostima manjim od 5.


Primjer 2: Java break izjava

Program u nastavku izračunava zbir brojeva koje je korisnik unio, sve dok korisnik ne unese negativan broj. Da bismo preuzeli unos od korisnika, koristili smo objekt Scanner.

import java.util.Scanner;

class UserInputSum {
    public static void main(String[] args) {
      
        Double number, sum = 0.0;

        // Kreiranje Scanner objekta
        Scanner input = new Scanner(System.in);
      
        while (true) {
            System.out.print("Upišite broj: ");

            // Uzmi vrijednosti od korisnika
            number = input.nextDouble();
         
            // Ukoliko je broj negativan petlja prestaje s radom
            if (number < 0.0) {
                break;
            }
         
           sum += number;
        }
        System.out.println("Suma brojeva je: " + sum);
    }
}

U gornjem programu, testni izraz while petlje je istinit (true). Primjetite sljedeću liniju koda:

if (number < 0.0) {
    break;
}

Ovo znači da kada korisnik unese negativne brojeve, while petlja prestaje s radom.



Java break i ugnježdene petlje

U slučaju ugniježdenih petlji, iskaz prekida (break) ukida unutarašnu petlju.



Izjava o prekidu (break) ovdje završava unutrašnju petlju, a kontrola prelazi na vanjsku petlju.



Označavanje break izjava

Do sada smo koristili neoznačenu izjavu o prekidu (break), ali u Javi postoji još jedan oblik izjave o prekidu koji je poznat i kao označeni prekid. Označeni prekid možemo upotrijebiti i za raskidanje najudaljenije petlje.



Kao što možete vidjeti na gornjoj slici, koristili smo label identifikator za određivanje vanjske petlje. Sada primjetite kako se koristi izjava break (break label;). Ovdje break izjave završava označenu izjavu (tj. vanjsku petlju). Zatim, kontrola programa skoči na iskaz nakon označene izjave. Evo još jednog primjera:

while (testExpression) {
   // Kod
   second:
   while (testExpression) {
      // Kod
      while(testExpression) {
         // Kod
         break second;
      }
   }
   // Skokovi za kontrolu
}

U gornjem primjeru, break second; se izvršava, dok se petlja označena kao secund prekida, a kontrola programa prelazi na iskaz nakon druge, gdje se nalazi while petlja.


Primjer 3: break izjava s label

class LabeledBreak {
    public static void main(String[] args) {
   
        // Petlja for je označena kao prva
        first:
        for( int i = 1; i < 5; i++) {

            // Petlja for je označena kao druga
            second:
            for(int j = 1; j < 3; j ++ ) {
                System.out.println("i = " + i + "; j = " +j);
             
                // Izjava break prekida prvu for petlju
                if ( i == 2)
                    break first;
            }
        }
    }
}

U gornjem primjeru, označeni prekid (break) izraza koristi se za prekid petlje koja je označena kao prva. To je:

first:
for(int i = 1; i < 5; i++) {...}

Ako promijenimo izjavu break first; program će se drugačije ponašati. U ovom slučaju će se petlja koja je označena kao druga prekinuti. Pogledajmo primjer:

class LabeledBreak {
    public static void main(String[] args) {
      
        // Petlja for je označena kao prva
        first:
        for( int i = 1; i < 5; i++) {

            // Petlja for je označena kao druga
            second:
            for(int j = 1; j < 3; j ++ ) {

                System.out.println("i = " + i + "; j = " +j);
       
                // Izjava prekida (break) ukida petlju koja je označena kao druga
                if ( i == 2)
                    break second;
            }
        }
    }
}