Problème Java

Bonsoir, je viens de terminer un exercice en java et le programme me trouve une erreur que je n'arrive pas du tout à résoudre (je prog sous eclipse)
voilà la ligne qui ne va pas :

public void toString()
{
String str;
if (forfait == true)
{
//Si la personne possède un forfait on retourne une phrase qui l'indique
System.out.println(super.toString() + " a un forfait");
}
else
{
//Sinon on retourne une phrase qui indique qu'elle n'en a pas
System.out.println(super.toString() + " n'a pas de forfait");
}
}

j'ai mis en gras ce que le programme me souligne si quelqu'un à une idée car c'est à rendre demain
merci

7 réponses

  1. Bonjour,

    Il manque des choses, t'as pas tout mis là non ?

    Il manque la déclaration du booléen forfait. de "super"???
    Chose très bizarre, tu appelles une méthode (toString()) alors que tu es à l'intérieur de celle-ci?. Très bizarre ton code...
    Peut être que ton soucis viens que ToString existe déjà dans le framework.
    1. je vais te poster tout le prog sa va être long désolé

      Classe personne

      public class Personne
      {
      //Déclaration des variables protégées
      protected String nom;
      protected int age;

      //Constructeur de la classe recevant en parametre une chaine et un entier
      public Personne(String nom, int age)
      {
      this.nom = nom;
      this.age = age;
      }

      //Setter de nom
      public void setNom(String nom)
      {
      this.nom = nom;
      }

      //Setter de age
      public void setAge(int age)
      {
      this.age = age;
      }

      //Getter de nom
      public String getNom()
      {
      return (nom);
      }

      //Getter de age
      public int getAge()
      {
      return (age);
      }

      //Méthode qui permet de retourner une chaine contenant nom et age
      public String toString()
      {
      //On retourne la phrase ainsi créée
      return (nom + "(" + age + " ans)");
      }

      //Programme principal qui utilise les méthodes de la classe
      public static void main(String[] args)
      {
      Personne P = new Personne("Prénom Nom", 22); //Ajout d'une personne

      //On affiche nom et age à l'aide des getters
      System.out.println("Nom: " + P.getNom());
      System.out.println("Age: " + P.getAge());

      System.out.println(P.toString()); //Affichage avec appel de toString

      P.setNom("Thomas Caillot"); //On change le nom
      P.setAge(21); //On change l'age
      System.out.println(P.toString()); //Affichage avec appel de toString
      }

      }

      __________________________________________________________________________________________

      Classe Skieur

      public class Skieur extends Personne
      {
      //Déclaration d'une variable protégée
      protected boolean forfait;

      //Constructeur de la classe qui reçoit une chaine, un entier, un booléen
      public Skieur(String nom, int age, boolean forfait)
      {
      super(nom, age); //Construction d'une personne
      this.forfait = forfait;
      }

      //Setter de forfait
      public void setForfait(boolean forfait)
      {
      this.forfait = forfait;
      }

      //Getter de forfait
      public boolean getForfait()
      {
      return (forfait);
      }

      //Méthode qui affiche une chaine contenant nom, age
      //et si la personne possède ou non un forfait
      public void toString()
      {
      String str;
      if (forfait == true)
      {
      //Si la personne possède un forfait on retourne une phrase qui l'indique
      System.out.println(super.toString() + " a un forfait");
      }
      else
      {
      //Sinon on retourne une phrase qui indique qu'elle n'en a pas
      System.out.println(super.toString() + " n'a pas de forfait");
      }
      }

      //Programme principal qui utilise les méthodes de la classe
      public static void main(String[] args)
      {
      Skieur S = new Skieur("Prénom Nom", 22, true); //Ajout d'un skieur
      S.toString(); //Affichage avec appel de toString

      S.setForfait(false); //Changement du parametre de forfait
      S.toString(); //Affichage avec appel de toString
      }

      }

      __________________________________________________________________________________________

      Classe Slalomeur

      public class Slalomeur extends Skieur
      {
      //Déclaration d'une variable privée
      private double temps;

      //Constructeur recevant en parametre un skieur
      public Slalomeur(Skieur S)
      {
      super(S.nom, S.age, S.forfait);
      if (forfait == false)
      {
      //On affiche un avertissement si le skieur n'a pas de forfait
      System.out.println(S.nom + " doit se procurer un forfait avant le début de l'épreuve");
      }

      temps = 0; //Initialisation du temps à 0
      }

      //Setter de temps
      public void setTemps(double temps)
      {
      if (forfait == true)
      {
      //On enregistre le temps si le skieur a un forfait
      this.temps = temps;
      }
      else
      {
      //Sinon on affiche un avertissement
      System.out.println("Le skieur n'a pas de forfait");
      }
      }

      //Getter de temps
      public double getTemps()
      {
      return (temps);
      }

      //Méthode qui affiche nom, age et temps de course
      public void toString()
      {
      if (forfait == true)
      {
      //Si le slalomeur a un forfait on affiche la phrase
      System.out.println(nom + " (" + age + "): " + temps + " secondes");
      }
      else
      {
      //Sinon on affiche un avertissement
      System.out.println(nom + " ne peut pas participer sans forfait");
      }
      }

      //Programme principal qui utilise les méthodes de la classe
      public static void main(String[] args)
      {
      Skieur S = new Skieur("Prénom Nom", 22, true); //Ajout d'un skieur
      Slalomeur Sl = new Slalomeur(S); //Ajout d'un slalomeur à partir du skieur

      Sl.setTemps(188); //On met le temps à 188
      Sl.toString(); //On affiche avec toString

      Sl.setForfait(false); //On change l'etat du forfait
      Sl.setTemps(118); //On essaie de mettre un nouveau temps
      Sl.toString(); //Et on affiche pour voir le cas interdit
      }

      }

      ___________________________________________________________________________________________

      voilà merci d'avance
      1. juste à l'endroit que j'ai mis en gras au premier post, il n'y a pas d'autres erreurs
        1. Moi je fais du C#, pas de Java.

          t'es sur que l'on peut faire un System.out.println dans une méthode?
          1. oui on peu faire çà on java
        2. je ressent que le souci vient quand tu a définit la méthode main dans chaque classe , ce que je savoir moi qu'il faut définit une seul méthode ,tu es sûr de ça ?
          1. oui une methode main pour chaque classe car dans l'exercice il est demander de tester chaque classe a chaque fois, après ne faire qu'une méthode je vois pas trop comment faire