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. 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
    1. 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. 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. juste à l'endroit que j'ai mis en gras au premier post, il n'y a pas d'autres erreurs
        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. 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.