Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème affichage decrisToi() en POO

Sujet résolu
    23 octobre 2017 à 11:34:32

    Bonjour à tous, 

    Voilà, comme vous vous en doutez, je suis en train d'apprendre le Java avec le cours "Apprenez à programmer en Java". J'en suis à la partie sur la POO, le premier sur la construction de Classes. 

    Voici le code de ma classe main: 

    public class classeMain {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Ville ville = new Ville("Lyon", 654, "France");
    		Ville ville2 = new Ville("Lille", 123, "France");
    		
    		ville2.decrisToi();
    	}
    
    }

    Et voici le code de ma classe Ville.java:

    public class Ville {
    	// Création de variables d'instance pour définir les caractéristiques de notre ville
    	// On déclare les variables en priate pour qu'elles ne soient pas accessibles ailleurs
    	private String nomVille;
    	private String nomPays;
    	private int nbHabitants;
    	private char categorie;
    	
    	// Constructeur par défaut
    	// Attention, les constructeurs d'une classe doivent porter le même nom que la classe. 
    	public Ville() {
    		System.out.println("Création d'une ville !");
    		nomVille = "Inconnue";
    		nomPays = "Inconnu";
    		nbHabitants = 0;
    		this.setCategorie();
    	}
    	
    	// Constructeur avec paramètres
    	// On ajoute le lettre p devant les paramètres
    	
    	public Ville(String pNomVille, int pNbHabitants, String pNomPays) {
    		System.out.println("Création d'une ville avec des paramètres");
    		nomVille = pNomVille;
    		nbHabitants = pNbHabitants;
    		nomPays = pNomPays;	
    		this.setCategorie();
    	}
    	
    	// ************** ACCESSEURS **************
    	
    	/* 
    	 * L'accesseur permet d'accéder aux variables en lecture, bien que celles-ci soient en mode
    	 * "private". Ainsi pourrons-nous afficher leurs contenus avec cette méthode. 
    	 * ATTENTION : Les accesseurs DOIVENT être de même type que la variable qu'ils retournent
    	 */
    	
    	public String getNom() {
    		return nomVille;
    	}
    	
    	public String getNomPays() {
    		return nomPays;
    	}
    	
    	public int getNbHabitants() {
    		return nbHabitants;
    	}
    	
    	public char getCategorie() {
    		return categorie;
    	}
    	
    	// **************** MUTATEURS ****************
    	
    	/* Le mutateur est une méthode permettant de pouvoir modifier le contenu d'une variable bien 
    	 * que celle-ci soit en mode "private". Cela permet donc de garder une certaine sécurité quant
    	 * contenu de base d'une variable d'instance. 
    	 * Cette méthode permet d'éviter de modifier le contenu de la variable d'instance directement 
    	 * dans les variables définassants la classe. 
    	 * 
    	 * ATTENTION : Les mutateurs DOIVENT être de type VOID car ils se contentent seulement de
    	 * 			   mettre la variable à jour. 
    	 */
    	
    	public void setNom(String pNom) {
    		nomVille = pNom;
    	}
    	
    	public void setNomPays(String pNomPays) {
    		nomPays = pNomPays;
    	}
    	
    	public void setNbHabitants(int pNbHabitants) {
    		nbHabitants = pNbHabitants;
    		this.setCategorie();
    	}
    	
    	  //Définit la catégorie de la ville
    	  private void setCategorie() {
    	 
    	    int bornesSuperieures[] = {0, 1000, 10000, 100000, 500000, 1000000, 5000000, 10000000};
    	    char categories[] = {'?', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'};
    
    	    int i = 0;
    	    while (i < bornesSuperieures.length && this.nbHabitants > bornesSuperieures[i])
    	      i++;
    
    	    this.categorie = categories[i];
    	  }
    	
    	  //Retourne la description de la ville
    	  public String decrisToi(){
    	    return "\t"+this.nomVille+" est une ville de "+this.nomPays+ ", elle comporte : "+this.nbHabitants+" habitant(s) => elle est donc de catégorie : "+this.categorie;
    	  }
    
    	  //Retourne une chaîne de caractères selon le résultat de la comparaison
    	  public String comparer(Ville v1){
    	    String str = new String();
    
    	    if (v1.getNbHabitants() > this.nbHabitants)
    	      str = v1.getNom()+" est une ville plus peuplée que "+this.nomVille;
    	     
    	    else
    	      str = this.nomVille+" est une ville plus peuplée que "+v1.getNom();
    	     
    	    return str;
    	  }
    	
    }

    Mon problème est le suivant: lorsque je compile mon code et que j'appelle ma méthode decrisToi(), la console me dit qu'il a bien crée la ville avec ses paramètre, mais il ne m'affiche pas la description... 

    J'ai le même problème avec la méthode comparer().

    Cela fait plus d'une heure que je cherche mon erreur et je ne la trouve pas. Eclipse ne me dit pas non plus qu'il y a une erreur... Alors que dois-je faire? 

    Merci à tous :)



    • Partager sur Facebook
    • Partager sur Twitter

    P77

      23 octobre 2017 à 11:41:24

      Forcément, si tu ne le lui demandes pas, il ne va pas deviner que tu veux l'afficher !

      Essaie System.out.println(ville2.decrisToi());

      -
      Edité par Oxygen05 23 octobre 2017 à 11:42:15

      • Partager sur Facebook
      • Partager sur Twitter
        23 octobre 2017 à 11:44:11

        Oxygen05, merci beaucoup, c'était ça, j'avais pas fait attention et j'ai honte que ce soit quelque chose d'aussi basique. Merci beaucoup :)
        • Partager sur Facebook
        • Partager sur Twitter

        P77

        Problème affichage decrisToi() en POO

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown