IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Semantic error porblem constructor


Sujet :

Java

  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 53
    Par défaut Semantic error porblem constructor
    Bonjour a tous,

    J'ai un problem quand j'execute mon code sur BlueJ. Voici mon code:

    [code]

    import java.util.*;
    import java.util.ArrayList;
    /**
    * Class Student - Simple class representing a student and their marks
    *
    * @author Course Team
    * @version 1.0
    */

    public class Student
    {
    /* instance variables */
    private String name; // String representing student's name
    private List<Integer> tmaMarks; // list of student's TMA marks.
    private int examMark; // student's exam mark. -1 indicates exam has not been taken
    private int substitutionScore; // student's substitution score. -1 if not yet calculated
    private int finalOCAS; // final continuous assessment score. -1 if not yet calculated

    /**
    * Constructor for objects of class Student
    */
    public Student(String aName)
    {
    super();
    this.name = aName;
    this.tmaMarks = new ArrayList <Integer>();
    this.examMark = -1;
    this.substitutionScore = -1;
    this.finalOCAS = -1;
    }

    Quand j'execute ce code dans BlueJ:

    Student aStudent = new Student();

    Je recois une semantic error:

    Semantic error: Typed variable declaration : Constructor error: Can't find default constructor for: class Student

    Je ne comprends pas, c'est exercise est tout simple, j'espere que se n'est pas Vista qui fait des caprices Je suis sure que je n'ai fait aucune erreures en declarant mon constructor.

    Si quelqu'un vois la panne, svp aider moi

  2. #2
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Par défaut
    il manque l'accolade fermante en fin de classes non ?

  3. #3
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 53
    Par défaut Re: semantic error
    Non, en faite j'ai mis qu'une partie du code, la premiere question dans mon exercise est de creer le constructor. Le reste du code est deja pret pour les futures questions. (si besoin je peut donner le code entier)

    C'est un vrai casse tete

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    Bonjour,

    Le constructeur que tu appelles n'existe pas.
    La classe a un constructeur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public Student(String aName)
    qui prend en paramètre un argument, mais il n'y a aucun constructeur sans paramètre.

    Lorsque tu implémentes à la main un constructeur, il faut que tu définisses l'ensemble des constructeurs que tu veux utiliser.

  5. #5
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Par défaut
    ok ok

    sinon je suis pas expert java mais quand tu fait un super() c'est bien pour appeller le constructeur de la class parent non ?

    or la class Student n'a aucun extends donc aucun héritage ...

    soit tu a oublié l'héritage soit tu ne doit pas faire de super()

    edit : et griller au dessus sur l'appel au constructeur :p

  6. #6
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    Par défaut, une classe hérite de la classe Object.

    Je ne crois pas que l'appel au constructeur par défaut de Object ne serve à grand chose.
    Mais l'appel à super() peut rester au cas où un jour il y ai de l'héritage.....

  7. #7
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 126
    Par défaut
    oui je suis d'accord, je ne vois pas ce qu'il fait la ton super(), pour ton erreur, tu fait un new Student() alors que ton seul constructeur c'est Student(String name) :S

  8. #8
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 53
    Par défaut Re: semantic error
    Ok, je suis perdu. J'ai retire super(), mais malheureusement toujours le meme message.

    Dans se project j'ai 2 class: student et tutor. J'ai ouvert le project documentation, et student herite de java.lang.Object. Donc si j'ai bien compris le constructor dois heriter de java.lang.Object?

    Mille excuses pour la confusion je debute

  9. #9
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    Si tu lis mon post précédent, tu devrais comprendre:

    Ta classe Student n' pas le constructeur sans paramètre que tu essais d'appeler. Dans le code que tu as fournis il n'y a qu'un constructeur avec un paramètre.

  10. #10
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Par défaut
    non non

    c'est juste que dans ta class student

    tu a mis comme constructeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public Student(String aName)
    c'est a dire que tu doit lui mettre en paramètre une String (vu le nom cela doit être le nom de l'étudiant)


    donc dans ton Main, lorsque tu veux faire appelle au constructeur

    il ne faut pas faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Student aStudent = new Student();
    mais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Student aStudent = new Student("ta string");
    si cela revient comme je le pense à donner un nom à l'étudiant

    pour créer l'étudiant Dupont, tu fera un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Student aStudent = new Student("Dupont");

  11. #11
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 53
    Par défaut Re: semantic error
    Oh, j'etais a des kilometres de comprendre. Je suis desole a tous pour la prise de tete, c'est juste que c'est la premiere fois que j'ai un constructor avec un argument.

    Mille merci a tous, je ne suis pas pret d'oublier ce problem

    Merci encore deglingo592003

  12. #12
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 108
    Par défaut
    de rien, j'ai pas été seul à t'aider n'oublie pas les autres

    au passage, tu parler de l'extends Object

    mais dans java tout est objet donc toute les classes hérite d'object

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/08/2012, 19h59
  2. Erreur "semantical error"
    Par skandaboy dans le forum Doctrine2
    Réponses: 4
    Dernier message: 30/08/2011, 08h57
  3. [PDO] No error: PDO constructor was not called in
    Par Milke dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/06/2010, 23h33
  4. Réponses: 8
    Dernier message: 20/10/2008, 18h26
  5. Réponses: 6
    Dernier message: 30/01/2008, 14h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo