terça-feira, 11 de dezembro de 2018

Dicas de Programação: Saindo de dois loops (for, for) em Java

Uma vez me perguntaram: como sair de dois loops dando um break?

Bem, eu sei que em Java é bem simples... É só dar um "labeling break":

public class Main {
    public static void main(String[] args) {
        saidaqui: for (int i = 0; i < Integer.MAX_VALUE; i++) {
            for (int j = 0; j < Integer.MAX_VALUE; j++) {
                System.out.println(i + ":" + j);
                if (j % 10 == 9) {                    
                    break saidaqui;
                }
            }
        }
    }
}

Com isso, quando o break executar, ele irá parar os dois loops (pois o label indica para ele sair do loop mais externo).

A mesma coisa pode ser feita em um loop/switch:

public class Main {
    public static void main(String[] args) {
        saidaqui: for (int i = 0; i < Integer.MAX_VALUE; i++) {            
            switch (i) {                
                case 9:
                System.out.println("Vai sair");
                if (true) {
                    break saidaqui;
                } 
                break;
                default:
                System.out.println("Index: " + i);
            }
        }
    }
}

Estranho, não?

Obs.: Acabei de ver que isso também funciona em Swift (iOS)!

import Foundation 

var i: Int = 0;
var j: Int = 0;
saidaqui: for i in 0...10 {
for j in 0...10 {
  print(String(format: "%d:%d", i, j));
if (j == 9) {                    
break saidaqui
}
}
}

Até mais!

Nenhum comentário: