Exercice en java

lindap Messages postés 86 Statut Membre -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,

public class Cercle {
static float pi = 3.1416f;
float rayon;
public Cercle(float rayon)
{ this.rayon = rayon; }
public float surface()
{ return rayon * rayon * pi;}
}

dans l'exécution de ce programme sur netBeans il y a une erreur la voici :
class cercle is public, should be declared in a file named cercle.java

j'arrive pas a comprendre ou dois je déclarer cette classe svp??

4 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Le message d'erreur est assez explicite, toute classe publique doit être enregistrée dans un fichier java qui porte son nom.
    Ta classe Cercle devra donc être dans le fichier Cercle.java
    2
    1. lindap Messages postés 86 Statut Membre 1
       
      comment je peut l'enregistrer svp?
      0
    2. KX Messages postés 19031 Statut Modérateur 3 020
       
      comme n'importe quel fichier : enregistrer sous... Cercle.java
      0
    3. lindap Messages postés 86 Statut Membre 1
       
      ok je viens de cliqué sur file après save as et j é nommé le fichier cercle .java mais l'erreur existe tjr!!
      0
    4. KX Messages postés 19031 Statut Modérateur 3 020
       
      il ne faut pas oublier la majuscule.
      0
    5. lindap Messages postés 86 Statut Membre 1
       
      ok merci b1 ca marche mais il y une autre erreur ici:
      public Cercle(float rayon)
      msg d'erreur: invalid method declaration;return type required
      0
  2. danimo
     
    Salut,

    Ton programme n'est pas exécutable directement.
    Il doit l'être à partir du programme qui doit l'utiliser.

    Exemple depuis la méthode main(...) du programme de l'utilisateur:

             Cercle unCercle;
             unCercle = new Cercle(10f); // on passe le rayon au constructeur
             float surface = unCercle.surface; // on récupère la surface
          
             System.out.println("Surface: " + surface);


    Mais (Poo oblige) ta class Cercle et son constructeur doivent être modifiés:

     public class Cercle
       {
          private float pi = 3.1416f;
          private float rayon;
          public float surface;
          
          public Cercle(float valRayon)
          {
             rayon = valRayon;
             surface = rayon * rayon * pi;
          }
    


    Cordialement,

    Dan
    1
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      Non, la classe Cercle n'a pas besoin d'être modifié, surface est une propriété du cercle, ça ne fait pas partie de la structure de ce cercle, ce doit donc bien être une méthode !

      On aura alors : float surface = unCercle.surface(),

      Remarque : la constante Math.PI existe, autant s'en servir...
      0
  3. danimo
     
    Salut,

    Peux-tu nous dire comment tu executes ce programme?

    Cordialement,

    Dan
    0
    1. lindap Messages postés 86 Statut Membre 1
       
      avec le NetBeans (debug file)
      0
  4. danimo
     
    Ps,

    Une remarque tout de même:

    L'utilisation d'un constructeur n'a rien dobligatoire...

       public class Cercle
       {
          private float pi = 3.1416f;
          private float surface;
          
          public float CalculerLaSurfaceDunCercle(float rayon)
          {
             surface = rayon * rayon * pi;
             return surface;
          }
       }
    


    et la partie utilisation depuis la méthode main(...

             Cercle c = new Cercle();
             float surface = c.CalculerLaSurfaceDunCercle(10f);
             
             System.out.println("Surface: " + surface);
    


    Dan
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      Dans ce cas il faut déclarer la méthode static car elle n'utilise pas l'objet this

      public class Cercle
      {
           public static double surface(double rayon)
           {
                 return Math.PI * Math.pow(rayon,2.0);
           }
      }
      
      System.out.println("Surface : "+Cercle.surface(10.0));
      0