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

Langage Java Discussion :

un petit programme qui se compile mais fait une erreur lors de l'exuction


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 22
    Points : 11
    Points
    11
    Par défaut un petit programme qui se compile mais fait une erreur lors de l'exuction
    salut les amis
    je travaille sut netbeanside
    mais malheureusement ce petit programme ce compile mai il n'excute pas
    le voila aidez svp il va me rendre dingue


    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    package eleve;
    import java.util.*;
     
    public class classeleve {
    String nom;
     
    int nbnote;
    int[] note;
    public void Eleves(String nom,int nbnote)
    {
     
    this.nom=nom;
     
    this.nbnote=nbnote;
     
    }
    public int GetNote(int num)
    {
    return note[num];
    }
    public void SetNote(int num,int note)
    {
    this.note[num]=note;
    }
    public void setNotes( int [ ] a )
    {
     
    }
    public void SaisirNote()
    {
    Scanner input=new Scanner(System.in);
    System.out.println("entrez les note du l'eleve "+ nom +")");
    for(int i=0;i<nbnote;i++)
    {
    System.out.println("entrez la note num ("+ i +")");
    note[i]=input.nextInt();// c'est la ou il arrête d'exécuter
    }
     
    }
    public double Moyenne( )
    {
    int i=0,somme=0, moyenne=0;
    while(i<nbnote)
    {
    somme+=note[i];
    i++;
    }
    moyenne=somme/i;
    return somme;
    }
    public int Notemaximale( )
    {
    int i=0,max=note[0];
    for(i=1;i<nbnote;i++)
    {
    if(max<note[i])
    max=note[i];
    }
    return max;
     
    }
    public int Noteminimal( )
    {
    int i=0,min=note[0];
    while(i<nbnote)
    {
    if(min>note[i])
    min= note[i];
    }
    return min;
    }
    public void afficher()
    {
    System.out.println(nom);
    for(int elements:note)
    System.out.println(elements);
    }
     
    }
    le main le voila
     
    public class Main {
     
     
    public static void main(String[] args)
    {
    classeleve Dupont=new classeleve();
    classeleve Durant=new classeleve();
    String x="Dupont";
    String c="Durant";
    Dupont.Eleves(x,3);
    Durant.Eleves(c,3);
    Dupont.SaisirNote();
    Durant.SaisirNote();
    Durant.afficher();
    Dupont.afficher();
     
     
     
     
     
     
    }
     
    }

  2. #2
    Membre régulier Avatar de sylviadesbois
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 108
    Points
    108
    Par défaut
    tu n'as jamais initialisé le tableau note[], il faut qu'à un moment tu le déclares comme cela:
    le mieux est de le faire dans tes constructeurs après avoir instancié nbnote

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    merci mon frère
    mais même si que j'ai initialise le problème et toujours la
    voila ce qui m'écrit le compilateur lors de l'exécution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
            at eleve.classeleve.SaisirNote(classeleve.java:39)
            at eleve.Main.main(Main.java:25)
    Java Result: 1
    BUILD SUCCESSFUL (total time: 11 seconds)

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 132
    Points : 170
    Points
    170
    Par défaut
    est-ce que tu as rajouté le code dans:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void Eleves(String nom,int nbnote)
    { 
    this.nom=nom; 
    this.nbnote=nbnote;
    this.note = new int[nbnote];
    }
    Sinon une petite remarque: tu devrais aller voir dans les conventions de nommage de Java car un code est plus facile à lire lorsqu'il suit ces conventions.
    (On les trouve facilement sur internet )

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    suivant l'erreur, tu dois sortir d'un tableau ... là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    note[i]=input.nextInt();
    tu es sûr que ton tableau note est assez grand pour tous tes imputs ?

    Regardes vers ArrayList ou Vector si tu ne sais pas à l'avance cb de note tu auras ("tableau" exstensible)

    ++

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 40
    Points : 36
    Points
    36
    Par défaut
    Bonjour.

    J'ai testé ton code. Il va fonctionner convenablement si tu initilises ton tableau note. Tu as le choix entre l'initialiser dans ta classe `'classeleve' comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int[] note = new int [MAX];
    Avec MAX une constante.

    Ou bien tu l'initialises dans le main, lorsque l'utilisateur t'informe du nombre de points associé à chaque éléve, comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dupont.note = new int[nbrePtDupont];
    Durant.note = new int[nbPtDurant];
    Bon courage.

  7. #7
    Membre régulier Avatar de sylviadesbois
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Points : 108
    Points
    108
    Par défaut
    Techniquement initialiser le tableau dans la méthode Eleve devrait être suffisant à condition de ne pas modifier ni le nombre de notes ni la taille du tableau de note par la suite (ou bien alors modifier setNbNote(int n) et setNote(int[] tab) pour qu'une modif de l'un entraîne une modif de l'autre mais bon pas très réglo...).
    Sinon je suis d'accord Elmor sur les conventions.
    Par exemple quand tu a un nom composé comme classeeleve, il est recommandé de plutot noter classeEleve, en plus si tu utlise un environnement de développement c'est plus pratique...
    Il n'est il me semble pas très recommandé d'accéder aux attributs d'une classe dans un main comme le propose Aida mais ça devrait effectivement marcher.

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    merci les amis le problème et résolu et ça bien sur a cause de votre aide les amis merci encore les amis merci
    a+

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 40
    Points : 36
    Points
    36
    Par défaut
    Alors, n'oublie pas de mentionner que c résolu.

    Merci.

Discussions similaires

  1. Petit programme qui trouve un caractère.
    Par tonykart13 dans le forum Général Python
    Réponses: 14
    Dernier message: 30/03/2010, 20h35
  2. Réponses: 3
    Dernier message: 06/05/2009, 09h20
  3. Petits programmes qui m'ennuie au démarrage
    Par Ganak dans le forum Windows XP
    Réponses: 1
    Dernier message: 05/02/2007, 19h36
  4. Petit programme qui pompe 50% de CPU
    Par nicofromChina dans le forum Langage
    Réponses: 6
    Dernier message: 16/01/2007, 11h03
  5. Un programme qui veut bosser; mais pas trop.
    Par Flodelarab dans le forum C++
    Réponses: 8
    Dernier message: 28/08/2006, 15h33

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