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

Variável iniciada dentro do for

Eu sei que essa questão já foi respondida há muito tempo, mas, para mim, não ficou claro. O código já sei que está ok, compila, mas qual seria a diferença para outros exercícios em que a variável foi iniciada dentro do laço e por isso não compilava?

Por exemplo, em outro exercício ( exercício 7)

 class Xyz1 {

public static void main(String[] args) {
    int y;
    for(int x = 0; x<10; ++x) {
        y = x % 5 + 2;
    }
    System.out.println(y);
}

}

É um código que não compila com a justificativa: "O código não compila na linha 8, onde estamos imprimindo o valor de y na tela. O compilador não tem certeza se a variável y vai ser iniciada sempre. Como a declaração é feita e o único valor atribuído é dentro do for, o compilador não tem certeza se o for vai ser executado mesmo."

Comparando os dois exercícios, percebi que o erro de compilação está na posição onde se inicia a variável no for, ou seja, nem sempre uma variável que é iniciada no for não será compilada, certo?

2 respostas

Ah ok pra mim tava tudo certo mas dai percebi tenta iniciar o y com um valor sem um valor atribuido o compilador não tem com o que trabalhar assim ele reclama pois não acha o valor que acha que a variavel divia ter

solução!

" O funcionamento do Loop For pode ter até quatro processos independentes entre si. O primeiro deles é a inicialização da variável contida no laço de iteração — que pode ou não já estar inicializada. Depois da variável executada, temos a segunda parte de nosso loop, quando temos uma “checagem de condição” a qual é realizada pelo loop de maneira contínua". Ou seja, o problema não é inicializar a variável dentro do for, é onde inicializar. E é justamente o que os dois exercícios deixam claro, no corpo do for ocorre uma checacgem da condição que pode ou não acontecer e isso foi bem explicado nas aulas, essa dubiedade é que não pode ocorrer. O bom desse curso é que você é obrigado a entender como as coisas funcionam e não ficar repetindo código!