HashSet et class

HashSet et class - Java - Programmation

Marsh Posté le 23-03-2015 à 16:04:07    

Bonjour les gens,
Depuis plusieurs jour je bug sur un exercice en programmation.
Alors voila j'ai 2 class présentez comme cela:
 
public class Voiture:
    public static final int VITESSE_MAX = 180;
    private final String marque;
    private final String modele;
    private final String immatriculation;
    private final int nbPassagersMax;
    private final int ptac;
    private final int pv;
    private int vitesseActuelle;
    private int nbKilometres;
    private int nbPassagers;
    private int poidsActuel;
    private EtatVoiture etat;
    private Personne personne;
    private HashSet<String> listePassagers;
 
public class Personne:
    private String nom;
    private String  prenom;
    private int poids;
    private int taille;
 
Et donc au sein de la class voiture j'ai créer une fonction qui permet de faire monter et descendre des personnes de la voiture. J'aimerai que le prénom de ses personne entre et sorte du HashSet j'ai donc fais :  
 
    public void monter(Personne personne){
        if(this.poidsActuel + personne.getPoids() > this.ptac)
            System.out.println("PTAC dépasser!" );
        else if(this.nbPassagers+1 > this.nbPassagersMax)
            System.out.println("Nombre de passagers max dépasser" );
        else if(this.etat == EtatVoiture.DEMARREE)
            System.out.println("La voiture n'est pas arretée!" );
        else{
            listePassagers.add(personne.getPrenom());
            this.poidsActuel+= personne.getPoids();
            this.nbPassagers+=1;
        }
             
    }
 
Et maintenant aucune personne n'apparait dans le HashSet et le nombre de passagers n'est pas incrémenter. Cependant le poidsActuel change...
Au secouurs ^^
Merci d'avance les gens.

Reply

Marsh Posté le 23-03-2015 à 16:04:07   

Reply

Marsh Posté le 24-03-2015 à 15:10:38    

Bonjour.
 
Il est impossible que la variable poidsActuel soit modifiée et que la variable nbPassagers ne l'est pas, donc je suppose que tu ne dois jamais rentrer dans ton else. Ajoute un affichage avant et après les modifications du poids et du nombre de passager pour t'en assurer.
En ce qui concerne le HashSet, cet objet ne peut pas contenir de valeurs identiques (en gros si tu ajoutes deux fois le même prénom, la fonction add va renvoyer false), vérifie le code d'erreur renvoyé par la fonction add, ça te permettra de savoir si l'insertion a lieu ou non.
 

Code :
  1. if(listePassagers.add(personne.getPrenom())) {
  2.     System.out.println("l'insertion a réussi" );
  3. } else {
  4.     System.out.println("l'insertion a échoué" );
  5. }


 
Bon, le mieux c'est de faire ça avec des exceptions, mais ça me semble encore un peu tôt vu que tu as l'air de débuter en programmation.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed