IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

aide programmation débutant


Sujet :

avec Java

  1. #21
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 26
    Par défaut
    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.

  2. #22
    Membre émérite
    Avatar de michel.di
    Homme Profil pro
    Freelance
    Inscrit en
    Juin 2009
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 782
    Par défaut
    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!

  3. #23
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 26
    Par défaut
    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?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void afficherGarage() {
    		for (Voiture v : this.voitures) {
    			System.out.println(v.toString());
    		}
    	}
    puis j'ai une erreur lorsque je souhaite affiche une voiture une fois kel a été mise dans garage.
    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?

  4. #24
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2009
    Messages : 112
    Par défaut
    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

  5. #25
    Membre émérite
    Avatar de michel.di
    Homme Profil pro
    Freelance
    Inscrit en
    Juin 2009
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 782
    Par défaut
    ou alors fais ça!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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());
    		}
    	}

  6. #26
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 26
    Par défaut
    merci pour votre aide. Il n'est pas toujours facile de trouver une aide sur la toile.

  7. #27
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Par défaut
    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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class Voiture extends Vehicule
    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é !).

    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	public Voiture() {
    	    this(4,0,0);
    	}
    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.

  8. #28
    Membre émérite
    Avatar de michel.di
    Homme Profil pro
    Freelance
    Inscrit en
    Juin 2009
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 782
    Par défaut
    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!

  9. #29
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    Citation Envoyé par michel.di Voir le message
    alors voila le résultat, tu as 4 classes, tes 3 d'avant+ l'enumération
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
     
    public enum TypeVehicule {
    	DIESEL,ESSENCE,GPL;
     
    	@Override
    	/**
             * permet d'afficher le type de vehicule
             */
    	public String toString() {
    		switch(this){
    		case DIESEL : return "diesel";
    		case ESSENCE : return "essence";
    		case GPL : return "gpl";
    		default : return "error";
    		}
    	}
    }
    bizarre ce toString() ?
    1) la cas default ne peux pas se produire
    2) la méthode toString par défaut rend le nom de l'instance (DIESEL par exemple) ... bon à limite tu passes en caractères minuscules

  10. #30
    Membre émérite
    Avatar de michel.di
    Homme Profil pro
    Freelance
    Inscrit en
    Juin 2009
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 782
    Par défaut
    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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/11/2014, 22h12
  2. Réponses: 4
    Dernier message: 12/05/2010, 17h54
  3. [XL-2003] aide programme débutant
    Par diamond8 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 17/07/2009, 20h25
  4. Aide programme débutant en C++
    Par beufa59 dans le forum Débuter
    Réponses: 4
    Dernier message: 10/03/2009, 16h30
  5. Aide pour débutant : addition
    Par playentry dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/03/2005, 20h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo