Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Dúvida no Ex. 13 da Aula 7 - Casting

Desculpem minha ignorância, mas gostaria de fazer mais uma pergunta:

Nesse exercício não intendi a resposta que Imprime 1, sendo que somete será true no if se i=3, dando um break no laço, porém ele recebe uma pós-incrementação onde i passa a valer 4, nao?!

5 respostas
solução!

Rodrigo,

Vamos o que acontece nesse exercicio é o seguinte .

i está valendo 0 (zero) , ok

quando entra no if ele verifica , o resto de i /3 é zero , então 0 = 0 , dai ele incrementa a variavel i , por ser pos incremento ele usará valendo 0 e depois incrementa .

com a comparação de 0 = 0 , entra no break e sai do for , pois o comando break interrompe o for . e depois imprimi a i que está vale 1

a resposta é imprime 1

Espero ter ajudado , Bons Estudos

João, obrigado pela pronta resposta, porém como podemos ver no exercício colado abaixo, ele não esta executando uma divisão e sim a expressão de "resto" da divisão, ou seja, qual o resto da divisão de 0/3: 0/3 = 0 restando 3, ou seja o resto é 3. Somente quando o i valer 3: 3/3=1 restando 0, que ele entrará no laço dando um break. Porém o i recebe um pós incremento de 1, valendo 4, e sendo impresso 4. Ou estou errado?

public class Teste {
    public static void main(String[] args) {
        int i;
        for (i = 0; i < 5; i++) {
            if (i++ % 3 == 0) {
                break;
            }
        }
        System.out.println(i);
    }
}

Rodrigo ,

sim eu sei que ele está executando o resto da divisão , mas o que você está se confundindo é que 0 divido por 3 é zero e não tem resto, o resto nesse caso é zero

e se o resto é zero , logo sai do for e imprime 1.

Aaaaaaaaa, então é isso . Animal nao sabe nem fazer conta! HAAhAHaH obrigado Celso.

Que isso acontece , que bom conseguiu entender .

tenho dúvida é só postar que tentaremos resolver