[Language][Compilateur]Objets et structures conditionnelles
Bonjour à tous!
- Je ne comprends pas pourquoi quand je créé un objet dans une structure conditionnelle, et que je fais appel à une donnée membre de ce même objet après la structure conditionnelle, le compilateur affiche une erreur, car il ne reconnaît pas l'objet.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| class Ggg{
public static void main(String[] args){
//Création de la référence joueur1 à partir de la classe ScorePlus
ScorePlus joueur1;
if(args.length==1){
joueur1 = new ScorePlus(args[0]);
}
else{System.out.println("erreur!");}
//affiche à l'écran la donnée membre nom de l'objet joueur1
System.out.println(joueur1.nom);
}
} |
- Par contre quand je fais référence à l'objet dans la structure conditionnelle, la compilation se fait sans problèmes.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| class Ggg{
public static void main(String[] args){
ScorePlus joueur1;
if(args.length==1){
joueur1 = new ScorePlus(args[0]);
System.out.println(joueur1.nom);
}
else{System.out.println("erreur!");}
}
} |
Merci Bien!
[Debug] Objets et structures conditionnelles
La structure conditionnnelle te permet dans le cas où le nombre d'arguments vaut 1 d'instancier l'objet jouer1
Code:
1 2 3 4
|
if(args.length==1){
joueur1 = new ScorePlus(args[0]);
} |
Dans le esle tu ne fais qu'afficher un message, sans instancier ce même objet :
Code:
1 2 3 4
|
else{
System.out.println("erreur!");
} |
Ensuite en dehors de la structure conditionnnelle, tu affiches un attribut de l'objet. Or si tu n'as pas d'argument ou si le nombre d'arguments est supérieur à 1, l'objet ne sera jamais instancié. Ce qui lèverait une exception si le compilateur n'indiquais pas une erreur.
Celui -ci ne t'indique pas qu'il ne reconnaît pas l'objet. Mais que l'objet n'a pas été instancié lors de sa déclaration et qu'il existe un cas où il ne sera pas instancié (dans le else).