...publicstaticvoidmain(String[]args){intx=10;inty;//y = x/2; <-- linha 3if(x<100)y=x/2;if(x>=100)y=x*0;System.out.println("The value of y is: "+y);//<--Nao compila variavel tem que ser inicializada}...
Dúvida: o código acima nao compila, a inicializaca da variavel local dentro de um IF, nao é valido ? Considera um escopo diferente ?
obs: se tirar o comentario da linha 3, compila e executa normalmente.
Como o if é um comando de decisão, com duas possíveis saídas, então a inicialização deveria ser feita em ambas saídas…
ou seja, vc deveria fazer o else, pra que o compilador saiba qual valor atribuir para y caso a condição do if seja avaliada com false.
Se vc tirar o comentário ele compila normalmente, pq independente do que aconteça no if, o y já terá sido inicializado.
davidtiagoconceicao
O código não compila porque o compilador entende que pode ocorrer uma situação em que nenhuma das condiçõe de if seja atingida. Ou seja, o compilador não consegue interpretar que os if’s são complementares.
Experimente alterar seu código para:
publicstaticvoidmain(String[]args){intx=10;inty;if(x<100)y=x/2;elsey=x*0;System.out.println("The value of y is: "+y);}
A
Alberes
Para variáveis locais é obrigatório a inicialização, isso é uma forma de protegeção do compilador, já para as variáveis de instâncias os valores são configurados com valores padrões.
C
cadu.sousa
Valeu Pessoal!
Nossa, estou estudando pelo livro da Kathy … mas fiz uns simulados Whizlabs, são mais complexas … o nível da prova SCJP, é o mesmo do Whizlabs ?