Olá Ingrid, tudo bem?
Você está certa! Instruções como for
e if
permitem que as chaves sejam omitidas, e caso façamos isso, o bloco da instrução será apenas a próxima linha de código do programa.
Então, como você já deve saber, no caso do seguinte código, dentro de um método main
:
if(1 != 2)
System.out.println("2 é diferente de 1!");
System.out.println("Essa linha será sempre executada, não importa o resultado do if!")
O primeiro System.out.println
nesse caso não será executado. E o segundo System.out.println
sempre será executado. Apenas o primeiro System.out
está dentro do bloco do if
. O segundo não pertence ao bloco.
No caso do código que você postou, temos um for sem chaves, que dentro do seu bloco (que nesse caso é a próxima linha), possui um outro for
. Esse segundo for, aninhado, também tem como seu bloco a próxima linha, um if
e por aí vai.
É isso que ocorre: se na próxima linha de um for sem chaves você usa uma instrução de bloco (for, if, else if, else while...), ele terá seu próprio bloco na próxima linha...
Você pode identar o código para ficar mais claro:
class A {
public static void main(String[] args) {
fora: for(int a=0;a<30;a++)
for(int b=0;b<1;b++)
if(a+b==25) continue fora;
else if(a+b==20) break;
else System.out.println(a);
}
}
O código funciona e corresponde ao seguinte código:
class A {
public static void main(String[] args) {
fora: for(int a=0;a<30;a++) {
for(int b=0;b<1;b++){
if(a+b==25) {
continue fora;
}
else if(a+b==20) {
break;
}
else {
System.out.println(a);
}
}
}
}
}
Faz sentido?
Abraço.