Problème Java

q.bruneau -  
 q.bruneau -
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. q.bruneau
     
    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
  2. Cisco
     
    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.
    0
  3. q.bruneau
     
    juste à l'endroit que j'ai mis en gras au premier post, il n'y a pas d'autres erreurs
    0
  4. Cisco
     
    Moi je fais du C#, pas de Java.

    t'es sur que l'on peut faire un System.out.println dans une méthode?
    0
    1. hamza_bba Messages postés 82 Statut Membre 1
       
      oui on peu faire çà on java
      -1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. q.bruneau
     
    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
    0
  7. hamza_bba Messages postés 82 Statut Membre 1
     
    essaye d'écrire les messages d'erreurs qui apparaitre
    -1
  8. hamza_bba Messages postés 82 Statut Membre 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