Nous savons donc qu'une variable locale doit être initialisée afin d'être utilisée dans la construction if-else-if. A titre d'exemple, le code suivant ne compilera pas.
public class Test {
public static void main (String...args){
double price= 11;
String model ;
if (price>10)
{model ="smartphone";}
else if (price<=11)
{model="not smart phone";}
System.out.println(model);
}
}
Mais, si vous changez else if (price<=11)
a else
ou initialiser la variable locale String model à une valeur aléatoire, le code se compilera avec succès. Ma question dans ce cas est "pourquoi ?"
C'était une question tirée d'un livre et l'explication était la suivante :
" la variable locale modèle est seulement déclarée, pas initialisée. L'initialisation du modèle de variable est placée dans les constructions if et else-if. Si vous initialisez une variable à l'intérieur d'une construction if ou else-if, le compilateur ne peut pas être sûr que ces conditions seront évaluées à true, ce qui entraîne l'absence d'initialisation de la variable locale. "
Même après l'explication, je n'ai toujours pas compris deux choses,
- Je ne vois pas pourquoi la variable modèle confondrait le compilateur, puisque le double prix est 11 quel que soit le modèle.
- Comment fait-on pour initialiser par magie la variable locale quand on met else à la fin ?