Variáveis locais

Olá,

[code]…
public static void main(String[] args){

	int x = 10;
	int y;
	
   //y = x/2; <-- linha 3
	if(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
}

…[/code]

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.

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:

public static void main(String[] args){
				
		int x = 10;
		int y;

		if(x &lt; 100) 
                    y = x/2;
		else
                    y = x * 0;
		System.out.println(&quot;The value of y is: &quot;+ y);
	}

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.

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 ?

Mais uma vez, obrigado.

Não, a SCJP é mais fácil que o Whizlabs.