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 :

Débutant : Problème de compilation ou d'exécution


Sujet :

Java

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Points : 4
    Points
    4
    Par défaut Débutant : Problème de compilation ou d'exécution
    Bonjour ,

    est ce que quelqu'un pourrait me dire pourquoi la classe TestLivre ne marche pas à l'execution svp.

    Et aussi, j'aimerais savoir comment on fait pour calculer et afficher le total des nbPages des 2 livres...

    Comme vous voyez, je suis vraiment débutante en Java et j'aimerais bien améliorer mon niveau


    Désolée d'avoir mis mon message dans ce topic mais je suis nouvelle sur le forum et je ne vois pas où se trouve l'onglet "new message"


    Merci et @++

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    public class Livre {
        private String auteur,titre;
        private int nbPages;
        //constructeur
        public Livre(String unAuteur, String unTitre) {
    	auteur = unAuteur;
    	titre = unTitre;
        }
     
        //Accesseur auteur
        public String getAuteur() {
    	return auteur;
        }
        //accesseur titre
        public String getTitre(){
    	return titre;
        }
        //accesseur nbPages
        public int getNbPages(){
    	return nbPages;
        }
        //modificateur auteur
        public void setAuteur(String auteur){
    	auteur=auteur;
        }
        //modificateur titre
        public void setTitre(String titre){
    	titre=titre;
        }
        //modificateur nbPages
        public void setNbPages(int nbPages){
    	if (nbPages > 0)
    	    nbPages=nbPages;
    	else System.out.println("erreur");
        }
     
        class TestLivre { //ça ne marche pas à l'execution
     
        public void main (String[] args){
    	Livre l1 = new Livre ("maupassant","une vie");
    	Livre l2 = new Livre ("antonio","policier");
    	l1.nbPages=143;
    	l2.nbPages=231;
    	System.out.println(l1.getAuteur());
    	System.out.println(l1.getNbPages());
    	System.out.println(l2.getNbPages());
    	System.out.println(l1.auteur);
    	System.out.println("143" + "231");
        }
        }
    }

  2. #2
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Merci d'utiliser la balise code et d'ouvrir une nouvelle discussion pour un nouveau problème

    Tu dis qu'il y a un problème à la compilation ou à l'exécution ? Car c'est vraiment différent.

    En tout cas, tu as une accolade de trop en bas

  3. #3
    Membre confirmé Avatar de gronono
    Inscrit en
    Novembre 2003
    Messages
    456
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2003
    Messages : 456
    Points : 482
    Points
    482
    Par défaut
    Bonjour,

    Dans la classe livre, les setters comportent des erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public void setAuteur(String auteur) {
     auteur = auteur;
    }
    est à modifier en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public void setAuteur(String auteur) {
     this.auteur = auteur;
    }
    En pièce jointe les deux classes modifiés.

    Pareil pour setTitre et setNbPages

    Un détail, pour setNbPages, je renvoierai une exception à la place d'écrire dans la console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public void setNbPages(int nbPages) {
      if (nbPages > 0) {
        this.nbPages = nbPages;
      } else {
        throw new IllegalArgumentException("nbPages doit être positif : " + nbPages);
      }
    }
    Dans la méthode main utilise de préférences les setters et les getters:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public static void main(String[] args) throws IOException {
      Livre l1 = new Livre ("maupassant","une vie");
      Livre l2 = new Livre ("antonio","policier");
      l1.setNbPages(143);
      l2.setNbPages(231);
      System.out.println(l1.getAuteur());
      System.out.println(l1.getNbPages());
      System.out.println(l2.getAuteur());
      System.out.println(l2.getNbPages());
      System.out.println(l1.getNbPages() + l2.getNbPages());
    }
    A+
    Gronono

    EDIT : Déplacement du "A+" qui c'était retourvé au milieu du message !!
    Fichiers attachés Fichiers attachés

  4. #4
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par millie Voir le message
    Merci d'utiliser la balise code et d'ouvrir une nouvelle discussion pour un nouveau problème

    Tu dis qu'il y a un problème à la compilation ou à l'exécution ? Car c'est vraiment différent.

    En tout cas, tu as une accolade de trop en bas
    Coucou Milie,

    ok pour la balise code...je l'utiliserais pour la prochaine fois

    merci, @+

  5. #5
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Bonjour gronono,

    je te remercie bien pour ta réponse trés structurée et qui m'a bien aidée...

    Mais juste quelques petits trucs qui m'échappent en java :

    les déclarations de variables et leurs noms :

    prenons cet exemple ci dessus :

    pourquoi est ce que lorsqu'on déclare le constructeur les variables titre et auteur deviennent unTitre et unAuteur et à quoi ça sert d'écrire titre=unTitre...etc.. tjs dans constructeur

    Et dans les modificateurs : pourquoi est ce qu'on écrit "auteur=auteur".

    Merci

    @++

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Le "titre" qui devient "unTitre" est généralement lié au générateur de code, dans tous les cas, ça ne pose pas vraiment de problème, bien au contraire, ça simplifie la compréhension.
    Exemples :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    public MaClasse
    {
       private String titre;
    
       public MaClasse(String titre)
       {
          this.titre = titre;  // Tu affectes la valeur du paramètre à la propriété de la classe
       }
    
    // Sans this
       public MaClasse(String titre)
       {
          titre = titre;  // Tu travailles sur la valeur du paramètre
       }
    
    // Avec un changement de nom
       public MaClasse(String unTitre)
       {
          titre = unTitre;   // Pas de risque de se tromper
       }
    ...
    }
    Bref, j'espère que ça t'éclaire...

    A+

  7. #7
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Oui, je comprends bien maintenant

    Merci beaucoup OButterlin

    @++

  8. #8
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Rebonjour,

    J'ai encore un p'tit souci

    On me demande de mettre la classe Test dans la classe Livre; à la compilation tout marche trés bien mais à l'éxecution, ça m'affiche un messge d'erreur que je ne comprends pas...J'ai bien essayé de comprendre mais j'y suis pas arrivée...je fais appel à vous, donc...J'ai mis le code en fichier joint si vous pouvez m'éclairer s'il vous plaît.

    Merci.

    @++
    Fichiers attachés Fichiers attachés

  9. #9
    Membre actif

    Étudiant
    Inscrit en
    Mai 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 200
    Points : 276
    Points
    276
    Par défaut
    Bonsoir,

    Donne nous ton message d'erreur.


    Sinon, pour info, tu peux mettre directement la méthode main dans la classe Livre.

    Puis petite piste : quand tu vas exécuter la méthode main fait bien attention avec ton code actuel, la méthode main se trouve dans la classe Test qui se trouve elle-même dans la classe Livre et non pas directement dans la classe Livre !!!

  10. #10
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Bonsoir,

    lorsque j'exécute, je fais donc "java Test" puisque la méthode "main" se trouve dans cette classe, mais j'ai ce message d'erreur :


    Exception in thread "main" java.lang.NoClassDefFoundError: Test


    voilà, merci

    @++

  11. #11
    Membre actif

    Étudiant
    Inscrit en
    Mai 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 200
    Points : 276
    Points
    276
    Par défaut
    Il est peut être impossible de mettre une méthode main dans une inner classe.

    Cependant comme je te l'ai di plus haut tu peut mettre ta méthode main directement dans ta classe livre.

  12. #12
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    ça va ça roule ...les classes "Test" et "Livre" se compilent et s'éxécutent normalement... il fallait les mettre dans le même répertoire pour que les instances de la classe Livre définies dans Test puissent reconnaître la classe Livre...enfin, on dirait..

    @++

  13. #13
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Bonsoir,

    petit à petit, on y arrive...Maintenant avec le code ci-joint, je dois :

    1)modifier la méthode "afficheToi()" pour utiliser "toString" (dans la classe Livre).

    2)Utiliser les trois constructeurs (et éventuellement d'autres méthodes) pour créer 3 livres de 300 pages.

    Je n'ai pas compris le point1)

    et pour le 2) : je ne vois pas comment faire pour utiliser les trois constructeurs.


    Merci.

    @++
    Fichiers attachés Fichiers attachés

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 73
    Points : 75
    Points
    75
    Par défaut
    Bonsoir Infolove,

    Citation Envoyé par infolove Voir le message
    ...
    2)Utiliser les trois constructeurs (et éventuellement d'autres méthodes) pour créer 3 livres de 300 pages.

    et pour le 2) : je ne vois pas comment faire pour utiliser les trois constructeurs.
    Tu as créé trois constructeurs avec des paramètres d'entrées différents.

    Hors un livre est définie par : nb Pages, un Auteur, un Titre.

    Si tu utilises le 1er constructeur, sans paramètres, il te faudra ensuite renseigner pour ce livre, les données suivantes (nb Pages, un Auteur, un Titre), en utilisant des méthodes.

    Réalise la même démarche en utilisant les constructeurs 2 et 3, pour créer tes 3 livres.

    A+

  15. #15
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Bonsoir,

    ça me paraît tout à fait logique,

    merci bien

    @++

Discussions similaires

  1. [TPW] [Débutant] Problème pour compiler et exécuter un programme
    Par jerome.savin dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 21/04/2015, 23h49
  2. |Java| Débutant : Problème à la compilation
    Par juninho dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 14/03/2008, 19h39
  3. Problème de compilation et d'exécution
    Par marguerite99 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 02/03/2008, 16h33
  4. [débutant] problème de compilation
    Par shinkyo dans le forum GLUT
    Réponses: 4
    Dernier message: 21/05/2006, 15h18
  5. [débutant] problème de compilation
    Par LaseLiep dans le forum C
    Réponses: 12
    Dernier message: 16/12/2005, 20h40

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