Olá Forum!
Queria saber como faço para chamar uma expressão de controle que tenha um label
…não me recordo de jeito nenhum!
Duvida rápida sobre Expressões de controle com Labels
4 Respostas
Ahn, não estou entendendo direito, é isto?
label001: while (x < y) {
x++;
if (x - y) {
break label001;
}
}
onde “break label001” faz algo equivalente a: (eu sei que não tem goto em Java):
while (x < y) {
x++;
if (x - y) {
goto endwhile001;
}
}
endwhile001:
Exatamente isso!
Foi mau se eu não expliquei direito,fazendo várias coisas aqui…
Valeu !
Isso é uma coisa que acho mais poderosa que o C++. No C++, quando você quer pular mais de um nível com “break” ou “continue” você precisa usar flags, ou então “goto” que é mais claro (mas só nesse caso).
No Java você não precisa usar goto, basta usar “break” ou “continue” com labels (embora esse seja um recurso “pró”, que mesmo escritores de livros não entendem direito - veja o livro Hardcore Java, de Robert Simmons, onde ele simplesmente não entendeu direito esse recurso. Ele acha que “break label001” pula para o “label001”, quando na verdade ele sai do loop com rótulo “label001”.)
Segundo Kathy Sierra e Bert Bates no Study guide pra provas de certificação da Sun, quanto ao uso de goto em Java:
The engineers’ first-draft of the preceding compiler warning resembled the
following:
KeywordTest.java:4: ‘goto’ not supported. Duh.
You have no business programming in Java. Begin erasing Java
Software Development Kit? (Yes/OK)
1 life-altering error
