je te remercie beaucoup, cela va me permettre de comprendre mieux, ça me fait une bonne revision pour le tp controle.
désolé de t'avoir fait travailler un dimanche, encore merci.
Version imprimable
je te remercie beaucoup, cela va me permettre de comprendre mieux, ça me fait une bonne revision pour le tp controle.
désolé de t'avoir fait travailler un dimanche, encore merci.
pas de soucis, si ça m'aurait embêté je ne l'aurai pas fait! ;)
si tu as d'autres questions n'hésite pas!
Ok, je te remercie, car ce n'ai pas toujours facile de trouver de l'aide.
j'aurais une petite question encore: que signie les deux points dans le for?
puis j'ai une erreur lorsque je souhaite affiche une voiture une fois kel a été mise dans garage.Code:
1
2
3
4
5 public void afficherGarage() { for (Voiture v : this.voitures) { System.out.println(v.toString()); } }
l'erreur retournée est dans la classe garage dans la fonction afficher à System.out.println c'est NullPointExeption : null.
cela signifie qu'il faut mettre v à null?
Salut,
Les : correspondent simplement à la nouvelle syntaxe des boucles for dispo depuis Java 1.5.
Ton erreur provient du fait que ton tableau est initialisé à 100 cases dans le constructeur. Or si ton tableau n'est pas rempli quand tu appelles la méthode afficherGarage, certaines cases contiendront un pointeur null.
Tu peux rajouter le test if (v != null) dans la boucle for
ou alors fais ça!
Code:
1
2
3
4
5
6
7 public void afficherGarage() { //tu n'affichera que les voitures dans le garage et non tout le tableau for (int i = 0;i <= this.current;i++) { System.out.println(this.voitures[i].toString()); } }
merci pour votre aide. Il n'est pas toujours facile de trouver une aide sur la toile.
Alors je vais me permettre de corriger le code de départ, parce que si c'est pour un cours, et que tu ne fais que relire le code de michel.di, tu risques de zapper des trucs importants.
Déjà en effet ta classe Voiture n'hérite pas de la classe Véhicule. Donc pour cela comme te l'as fais remarquer michel.di, il te faut faire
Ensuite, quand tu fais de l'héritage les classes fille (dans notre cas voiture) herite des méthodes et attributs de leur classe mère ( dans notre cas véhicule). Donc quand tu vas définir ta classe Voiture, il ne faut pas redéfinir les attributs hérités (dans ton cas place, prix et volume). Seul le booléen doit être dans la classe Voiture (et pas dans Véhicule c'est pas ce qui est demandé !).Code:public class Voiture extends Vehicule
Mais pour que cet héritage soit possible, il faut que la visibilité de la variable le permette.
Tu as 3 visibilités différentes :
public : la variable est visible par tout le monde
protected : la variable est visible uniquement par la classe la possédant, et par les classes filles.
private : la variable est visible uniquement par la classe la possédant.
Or toi tu as mis tes variables de Vehicule en privé, donc quand en effectuant l'héritage la classe Voiture ne pourrait en bénéficier.
Enfin les conctructeurs sont faux, en tout cas au moins celui par défaut.
Je comprend que le nombre de place est au minimum de 4, et la charge au maximum de 100, et vous vous mettez l'inverse.
D'autre part, en admettant que cela soit bien le contraire, le constructeur par défaut est erroné puisque soit le nombre de place soit la charge sont à 0.
Vous auriez pu éviter ce problème en ayant le constructeur par défaut :
Cela va appeler le constructeur Voiture(place, charge, prix) avec les arguments 4,0,0. L'intérêt est que le tests de validité de place et de charge seront fait à un seul endroit. En admettant que demain le nombre de place mini (ou maxi selon la logique) change, il suffit de changer la valeur dans le constructeur effectuant le test.Code:
1
2
3
4 public Voiture() { this(4,0,0); }
effectivement j'aurai du détailler la visibilité des attributs. :)
je lui ai juste écrit le plus gros constructeurs avec tous les paramètres possibles, à lui de voir s'il veut en mettre d'autres!
le default est obligatoire sinon le compilo rale que la méthode ne retourne rien dans un autre cas que ces 3 la!
j'ai réécris le toString pour plus de clarté pour azerty0125 qui débute en Java