Partage
  • Partager sur Facebook
  • Partager sur Twitter

The method getNomPays() is undefined for the type

Sujet résolu
    6 juillet 2019 à 15:12:37

    Bonjour à tous,

    Je suis actuellement au second chapitre "Créez votre première classe"

    En recopiant le programme j'ai cela dans mon main:

    public class Sdz1 {
     
      public static void main(String[] args)
      {
    	  
    	  Ville v = new Ville();
    	  Ville v1 = new Ville("Marseille", 123456, "France");       
    	  Ville v2 = new Ville("Rio", 321654, "Brésil");
    
    	  System.out.println("\n v = "+v.getNom()+" ville de  "+v.getNombreHabitants()+ " habitants se situant en "+v.getNomPays());
    	  System.out.println(" v1 = "+v1.getNom()+" ville de  "+v1.getNombreHabitants()+ " habitants se situant en "+v1.getNomPays());
    	  System.out.println(" v2 = "+v2.getNom()+" ville de  "+v2.getNombreHabitants()+ " habitants se situant en "+v2.getNomPays()+"\n\n");
    	               
    	  Ville temp = new Ville();
    	  temp = v1;
    	  v1 = v2;
    	  v2 = temp;
    	         
    	  System.out.println(" v1 = "+v1.getNom()+" ville de  "+v1.getNombreHabitants()+ " habitants se situant en "+v1.getNomPays());
    	  System.out.println(" v2 = "+v2.getNom()+" ville de  "+v2.getNombreHabitants()+ " habitants se situant en "+v2.getNomPays()+"\n\n");
     
    	  v1.setNom("Hong Kong");
    	  v2.setNom("Djibouti");
    	        
    	  System.out.println(" v1 = "+v1.getNom()+" ville de  "+v1.getNombreHabitants()+ " habitants se situant en "+v1.getNomPays());
    	  System.out.println(" v2 = "+v2.getNom()+" ville de  "+v2.getNombreHabitants()+ " habitants se situant en "+v2.getNomPays()+"\n\n");
      }
              
    }




    et dans ma classe Ville j'ai :

    public class Ville {
    
    	  private String nomVille;
    	  private String nomPays;
    	  private int nbreHabitants;
    	
      public String getNom()  {  
        return nomVille;
      }
    
      public String getNomPays()
      {
        return nomPays;
      }
    
      public int getNombreHabitants()
      {
        return nbreHabitants;
      } 
    
      public void setNom(String pNom)
      {
        nomVille = pNom;
      }
    
      public void setNomPays(String pPays)
      {
        nomPays = pPays;
      }
    
      public void setNombreHabitants(int nbre)
      {
        nbreHabitants = nbre;
      }  
    }

    https://openclassrooms.com/forum/sujet/probleme-de-classe-6


    J'ai trouvé la même question mais je n'arrive toujours pas a saisir ce que je dois modifier et ou l'ajouter si besoin, car lorsque j'effectué une modification j'ai encore plus d'erreur :(

    Merci pour votre aide 

    -
    Edité par swarskof 6 juillet 2019 à 15:42:16

    • Partager sur Facebook
    • Partager sur Twitter
      6 juillet 2019 à 17:38:50

      Quand tu crées un objet Java, cela exécute une méthode qui s'appelle le constructeur.

      Tu peux déclarer plusieurs constructeurs dans la classe Ville, de manière à pouvoir créer un objet Ville de plusieurs façon différentes (en précisant des arguments ou pas, par exemple).

      Ce code crée des objets Ville, mais pas en utilisant les mêmes constructeurs :

      Ville v = new Ville();
      Ville v1 = new Ville("Marseille", 123456, "France");   

      Ta classe doit donc déclarer deux constructeurs qui permettront à Java de savoir quoi faire pour créer l'objet Ville dans chaque cas :

      public class Ville {
      
          public Ville() {
              ...
          }
      
          public Ville(String pNom, int pNbre, String pPays) {
              ...
          }
      
      }

      C'est ça qu'il manque dans ton code. Tu les trouveras dans la page du cours.

      Pour l'erreur sur la méthode getNomPays(), je soupçonne soit une faute de frappe, soit l'existence de deux classes Ville que tu aurais écrites successivement ?

      • Partager sur Facebook
      • Partager sur Twitter
        6 juillet 2019 à 22:00:24

        merci pour ton retour Zachee54, je vais bûcher ca dès demain je te tiens au jus
        • Partager sur Facebook
        • Partager sur Twitter
          14 juillet 2019 à 0:11:48

          Apres vérification cela a marché, j'avais oublié des éléments mais quand je continu dans le cour j'ai une nouvelle erreurs.

          Exception in thread "main" java.lang.Error: Unresolved compilation problem: 

          The declared package "" does not match the expected package "ville"

          at ville.Ville.<init>(Ville.java:1)

          at ville.VilleMain.main(VilleMain.java:7)

          package ville;
          
          public class VilleMain {
          
          	public static void main(String[] args) {
          		
          		Ville v = new Ville();
          		Ville v1 = new Ville("Marseille", 123456, "France");
          		Ville v2 = new Ville("Rio", 321654, "Brésil");
          		System.out.println("\n v = "+v.getNom()+" ville de "+v.getNombreHabitants()+ " habitants se situant en"+v.getNomPays());
          		System.out.println(" v1 = "+v1.getNom()+" ville de "+v1.getNombreHabitants()+ " habitants se situant en "+v1.getNomPays());
          		System.out.println(" v2 = "+v2.getNom()+" ville de "+v2.getNombreHabitants()+ " habitants se situant en	"+v2.getNomPays()+"\n\n");
          
          		Ville temp = new Ville();
          		temp = v1;
          		v1 = v2;
          		v2 = temp;
          		System.out.println(" v1 = "+v1.getNom()+" ville de"+v1.getNombreHabitants()+ " habitants se situant en"+v1.getNomPays());
          		System.out.println(" v2 = "+v2.getNom()+" ville de"+v2.getNombreHabitants()+ " habitants se situant en"+v2.getNomPays()+"\n\n");
          
          		v1.setNom("Hong Kong");
          		v2.setNom("Djibouti");
          		System.out.println(" v1 = "+v1.getNom()+" ville de"+v1.getNombreHabitants()+ " habitants se situant en"+v1.getNomPays());
          		System.out.println(" v2 = "+v2.getNom()+" ville de"+v2.getNombreHabitants()+ " habitants se situant en"+v2.getNomPays()+"\n\n");
          	}
          
          }
          
          public class Ville {
           
            private String nomVille;
            private String nomPays;
            private int nbreHabitants;
            private char categorie;
             
            public Ville(){
              System.out.println("Création d'une ville !");          
              nomVille = "Inconnu";
              nomPays = "Inconnu";
              nbreHabitants = 0;
              this.setCategorie();
            }
           
            public Ville(String pNom, int pNbre, String pPays)
            {
              System.out.println("Création d'une ville avec des paramètres !");
              nomVille = pNom;
              nomPays = pPays;
              nbreHabitants = pNbre;
              this.setCategorie();
            }  
            public String getNom()  {  
              return nomVille;
            }
            public String getNomPays()
            {
              return nomPays;
            }
            public int getNombreHabitants()
            {
              return nbreHabitants;
            } 
            public char getCategorie()
            {
              return categorie;
            } 
          
            public void setNom(String pNom)
            {
              nomVille = pNom;
            }
          
            public void setNomPays(String pPays)
            {
              nomPays = pPays;
            }
          
            public void setNombreHabitants(int nbre)
            {
              nbreHabitants = nbre;
              this.setCategorie();
            }  
          
            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.nbreHabitants > bornesSuperieures[i])
                i++;
          
              this.categorie = categories[i];
            }
          
            public String decrisToi(){
              return "\t"+this.nomVille+" est une ville de "+this.nomPays+ ", elle comporte : "+this.nbreHabitants+" habitant(s) => elle est donc de catégorie : "+this.categorie;
            }
          
            public String comparer(Ville v1){
              String str = new String();
          
              if (v1.getNombreHabitants() > this.nbreHabitants)
                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;
            }
          }


          Merci d'avance

          -
          Edité par swarskof 14 juillet 2019 à 0:22:16

          • Partager sur Facebook
          • Partager sur Twitter
            14 juillet 2019 à 11:28:17

            Enlève le "package ville;" dans VilleMain.java
            • Partager sur Facebook
            • Partager sur Twitter
              16 juillet 2019 à 19:23:23

              merci pour ton retour, j'ai essayé mais j'ai une autre erreur, donc ca ne vient pas de la.

              En réécrivant le code j'ai de nouveau une nouvelle erreur, qui est la suivante :

              Exception in thread "main" java.lang.Error: Unresolved compilation problem: 

              Syntax error, insert ";" to complete Statement

                     at ville.VilleMain.main(VilleMain.java:35)

              J'ai beau mettre la ligne en question en commentaire pour confirmer que c'est bien celle-ci qui est en cause mais j'ai la même erreur sur la ligne du dessus ainsi de suite

              • Partager sur Facebook
              • Partager sur Twitter
                16 juillet 2019 à 21:58:47

                Il s'agit peut-être d'une accolade ou une parenthèse mal fermée, tu pourrais poster le contenu de VilleMain.java stp ?
                • Partager sur Facebook
                • Partager sur Twitter
                  17 juillet 2019 à 2:24:49

                  Depuis un moment je n'avance plus j'ai que des erreurs de ce genre la.

                  J'ai beau vérifier les ; ainsi que les () me semblent tous mis.

                  package ville;
                  
                  public class VilleMain {
                  
                  	public static void main(String[] args) {
                  
                  		Ville v = new Ville();
                  		Ville v1 = new Ville("Marseille", 123456, "France");       
                  		Ville v2 = new Ville("Rio", 321654, "Brésil");
                  
                  		System.out.println("\n v = "+v.getNom()+" ville de  "+v.getNombreHabitants()+ " habitants se situant en "+v.getNomPays());
                  		System.out.println(" v1 = "+v1.getNom()+" ville de  "+v1.getNombreHabitants()+ " habitants se situant en "+v1.getNomPays());
                  		System.out.println(" v2 = "+v2.getNom()+" ville de  "+v2.getNombreHabitants()+ " habitants se situant en "+v2.getNomPays()+"\n\n");
                      
                  		Ville temp = new Ville();
                  		temp = v1;
                  		v1 = v2;
                  		v2 = temp;
                  		       
                  		System.out.println(" v1 = "+v1.getNom()+" ville de  "+v1.getNombreHabitants()+ " habitants se situant en "+v1.getNomPays());
                  		System.out.println(" v2 = "+v2.getNom()+" ville de  "+v2.getNombreHabitants()+ " habitants se situant en "+v2.getNomPays()+"\n\n");
                  
                  		v1.setNom("Hong Kong");
                  		v2.setNom("Djibouti");
                  		      
                  		System.out.println(" v1 = "+v1.getNom()+" ville de  "+v1.getNombreHabitants()+ " habitants se situant en "+v1.getNomPays());
                  		System.out.println(" v2 = "+v2.getNom()+" ville de  "+v2.getNombreHabitants()+ " habitants se situant en "+v2.getNomPays()+"\n\n");
                      }
                  }



                  • Partager sur Facebook
                  • Partager sur Twitter
                    17 juillet 2019 à 9:58:03

                    Bonjour,
                    Je viens de tester ton code et il fonctionne sans problème. Le problème vient je pense soit de ton projet, soit des noms de package.
                    Essaye ça :
                    1- Mettre "package ville;" dans ta classe Ville
                    2- Si ça marche pas, créé un nouveau projet (il peut y avoir un problème avec les fichiers de ton projet)
                    3- Créé un package "package com.sdz.ville;" (on nomme les packages en général de cette façon en trois parties). Tu as plus d'infos ici:
                    https://openclassrooms.com/fr/courses/26832-apprenez-a-programmer-en-java/21583-creez-des-packages
                    4- Copie tes deux classes et rajoute avec le nom du package  "package com.sdz.ville;"
                    5- Enfin tu as une erreur qui apparaissait à la ligne 35 de ta classe  VilleMain alors que tu n'as que 29 lignes. Dans ce cas là supprime tous les éléments qui sont après les deux dernières accolades. 

                    -
                    Edité par Nemo404 17 juillet 2019 à 9:58:47

                    • Partager sur Facebook
                    • Partager sur Twitter
                      17 juillet 2019 à 17:34:56

                      swarskof a écrit:

                      at ville.VilleMain.main(VilleMain.java:35)

                      Le message d'erreur t'indique clairement le fichier et la ligne dans laquelle se trouve l'erreur de syntaxe.

                      Mais le code que tu postes ne fait que 29 lignes, alors que l'erreur est à la ligne 35.
                      Regarde toi-même ce qu'il y a aux lignes 34/35, et si tu ne trouves pas poste le contenu du fichier au moins jusqu'à cette ligne.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        25 juillet 2019 à 23:35:50

                        j'ai de nouveau des messages d'erreurs malgré le fait de recopier. je regarderai ca a mon retour de vacance car je pense être largué :(
                        • Partager sur Facebook
                        • Partager sur Twitter

                        The method getNomPays() is undefined for the type

                        × 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