Variables locales : might not have been initialized
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| class Tableau{
int[]tab;
int tailleTableau;
void min(){
int [] temp;
for(int i=0;i<tailleTableau;i++){
temp=new int[tailleTableau];
temp[i]=tab[i];
}
int tp=0;
for(int k=0;k<tailleTableau-1;k++){
if(temp[k]>temp[k+1]){
tp=temp[k+1];
}
else{
tp=temp[k];
temp[k+1]=temp[k];
}
}
System.out.println("\n"+"minimum="+ tp);
}
} |
Je déclare la variable int[] temp à l'entrée de la méthode min() et je crée l'objet temp =new int[tailleTableau] dans un sous bloc de méthode min(), je me dis que temp déclarée à l'entrée de la méthode a aussi sa portée dans le sous-bloc. Mais quand je compile, la machine me dit:" temp might not been initialized". Mais quand je fais int[] temp=new int[tailleTableau] (voir classe cidessous) , il se se pose aucun soucis. Je n'arrive pas à m'expliquer cette différence.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| class Tableau{
int[]tab;
int tailleTableau;
void min(){
int [] temp=new int[tailleTableau];
for(int i=0;i<tailleTableau;i++){
temp[i]=tab[i];
}
int tp=0;
for(int k=0;k<tailleTableau-1;k++){
if(temp[k]>temp[k+1]){
tp=temp[k+1];
}
else{
tp=temp[k];
temp[k+1]=temp[k];
}
}
System.out.println("\n"+"minimum="+ tp);
}
} |