Partage
  • Partager sur Facebook
  • Partager sur Twitter

calculerAire

    2 octobre 2011 à 15:27:03

    Bonjour tout le monde! Voici un programme censé calculer l'aire d'un rectangle.
    class Rectangle{
       
          int longueur;
          int largeur;
       
          Rectangle (int nLongueur, int nLargeur){
          
             longueur = nLongueur;
             largeur = nLargeur;
          
          }
       
          int calculerAire (int longueur, int largeur){
          
             return longueur * largeur;
          }
       
          int calculerPerimetre (int longeur, int largeur){
             return (longeur + largeur)*2;
          }
       }
    


    class Test{
       
          public static void main (String args[]){
             Rectangle rectangle1 = new Rectangle (5,3);
             Rectangle rectangle2 = new Rectangle (10,6);
          
             System.out.println (rectangle1.calculerAire());      
          }
       }
    


    Et voici le message d'erreur:

    Test.java:7: error: method calculerAire in class Rectangle cannot be applied to given types;
    System.out.println (rectangle1.calculerAire());
    ^
    required: int,int
    found: no arguments
    reason: actual and formal argument lists differ in length
    1 error


    Qu'est ce qui ne va pas dans ce code svp :euh: ?
    • Partager sur Facebook
    • Partager sur Twitter
      2 octobre 2011 à 15:35:23

      int calculerAire (int longueur, int largeur){
            
               return longueur * largeur;
            }
      


      tu demandes 2 paramètres pour la méthode calculerAire, que tu ne donnes pas dans rectangle1.calculerAire()

      Utilises plutôt les valeurs que tu as données en instanciant l'objet

      int calculerAire (){
            
               return this.longueur * this.largeur;
            }
      


      edit : ce serait bien de rendre tes variables "private" et tes méthodes "public" aussi
      • Partager sur Facebook
      • Partager sur Twitter
        2 octobre 2011 à 15:48:31

        C'est quand même bizarre non?
        Ce que j'ai compris c'est qu'il faudrait réécrire les valeurs?

        System.out.println (rectangle1.calculerAire(5,3));
        


        J'ai aussi essayé comme ça avec les attributs
        System.out.println (rectangle1.calculerAire(longueur, largeur));
        

        Ca ne fonctionne toujours pas...
        • Partager sur Facebook
        • Partager sur Twitter
          2 octobre 2011 à 15:55:29

          non non, les valeurs tu les donnes quand tu instancies l'objet :
          Rectangle rectangle1 = new Rectangle (5,3);
          


          à partir de là les dimensions du rectangle sont enregistrées dans l'objet et tu ne dois pas les redonner quand tu utilise une méthode de l'objet.

          donc tu dois laisser ça :
          System.out.println (rectangle1.calculerAire());
          


          mais en changeant dans ton code
          int calculerAire (int longueur, int largeur){
          
          par
          int calculerAire (){
          


          comme ça la méthode n'attend pas de paramètre et ça marchera



          edit : tu auras le même problème avec le périmètre.

          utilise ce code et ça devrait marcher :
          public class Rectangle{
             
                private int longueur;
                private int largeur;
             
                public Rectangle (int nLongueur, int nLargeur){
                
                   this.longueur = nLongueur;
                   this.largeur = nLargeur;
                
                }
             
                public int calculerAire (){
                
                   return this.longueur * this.largeur;
                }
             
                public int calculerPerimetre (){
                   return (this.longueur + this.largeur)*2;
                }
             }
          
          • Partager sur Facebook
          • Partager sur Twitter

          calculerAire

          × 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