Although it is perfectly okay to use a goto to exit a nested loop, many developers prefer not to use gotos. Another way to exit a complicated, nested block of code and go to some specific place is to use the form of the break statement combined with a label. For example:
X:for (int i = 0; i < x; i++) { ... Y: for (int j = 0; j < y; j++) { ... Z: for (int k = 0; k < z; k++) { ... if (some_condition) { break Y; } } } ... *}
If and when some_condition is true, the labeled break statement is executed and the control will pass to the point marked *. Executing the labeled break statement terminates the execution of the statement thus labeled.