none
Une exception non gérée du type 'System.NullReferenceException' s'est produite RRS feed

  • Question

  • bonjour, je suis en train de créer un application en wpf c# et lorsque je clic sur le titre pour trier mes données l'exception suivante apparaît " Une exception non gérée du type 'System.NullReferenceException' s'est produite dans ListeÉtudiant.exe

    Informations supplémentaires : La référence d'objet n'est pas définie à une instance d'un objet."

    il indique que l'erreur provient de la ligne suivante:

                    ListeEtudiant.Items.Add(tabCodeP[i] + "   " + tabNom[i].PadRight(12) + " " + tabPrenom[i].PadRight(12) + " " + tabNote[i, 0].PadLeft(5) + " " + tabNote[i, 1].PadLeft(5) + " " + tabNote[i, 2].PadLeft(5) + " " + tabNote[i, 3].PadLeft(5) + " " + tabNote[i, 4].PadLeft(5) + " " + tabNote[i, 5].PadLeft(5) + " " + tabTotal[i, 0].PadLeft(5) + " " + tabTotal[i, 1].PadLeft(4));

    je vous ai mis mon code entier aussi 

    merci pour votre aide .

    using System;
    using System.IO;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    using Microsoft.Win32;
    
    
    namespace ListeÉtudiant
    {
        /// <summary>
        /// Logique d'interaction pour MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            string ligne;
            int cpt = 0;
            double moyenne;
            string codeP, Nom, Prenom; // la variable codeP signifie le code permanent
            int Tp1, Tp2, Tp3, Tp4, ExI, ExF; //ExI = Examen Intra, ExF = Examen Finale
            double total, meilleur1 = 0, meilleur2 = 0, gTotal = 0; // gTotal = Grand Total, cumul de toute les notes de la classe
    
    
            string[] tabEtudiants = new string[100]; // #1 déclaration du tableau avec tout les données
            string[] tabCodeP = new string[100]; //déclaration d'un tableau pour les code permanent
            string[] tabNom = new string[100]; // déclaration d'un tableau pour les noms
            string[] tabPrenom = new string[100];// déclaration d'un tableau pour les prénoms
            string[,] tabNote = new string[100, 6];
            string[,] tabTotal = new string[100, 2];
    
            public MainWindow()
            {
                InitializeComponent();
            }
    
            private void MenuItem_Click(object sender, RoutedEventArgs e)
            {
    
                AproposDe FenetreAPROPOSDE = new AproposDe();
                FenetreAPROPOSDE.ShowDialog();
            }
    
            private void Quitter_Bouton_Click(object sender, RoutedEventArgs e)
            {
                Close();
            }
    
            private void LireFicher_Bouton_Click(object sender, RoutedEventArgs e)
            {
                string cote;
    
                OpenFileDialog openDialog = new OpenFileDialog();
                openDialog.ShowDialog();
                StreamReader ListeEtudiants = new StreamReader(openDialog.FileName);
    
                //StreamReader ListeEtudiants = new StreamReader ("C://Users//Fred//Desktop//université//programmation visuelle 8pro140//LAVF06599105 TP2//resultatsEtudiantsSol//ListeEtudiants.csv");
                ListeEtudiant.Items.Clear();
                ListeEtudiant.Items.Add("Code Perm      Nom        Prénom          Tp1  Tp2  Tp3  Tp4  ExI  ExF   Tot Cote");
                ListeEtudiant.Items.Add("---------------------------------------------------------------------------------");
                ligne = ListeEtudiants.ReadLine();
    
                while (ligne != null)
                {
                    tabEtudiants[cpt] = ligne; // #2 insertion des lignes dans le tableau        
    
                    codeP = ligne.Split(';')[0];
                    tabCodeP[cpt] = codeP;
    
                    Nom = ligne.Split(';')[1].Split(' ')[1];
                    tabNom[cpt] = Nom;
                    Prenom = ligne.Split(';')[1].Split(' ')[0];
                    tabPrenom[cpt] = Prenom;
                    Tp1 = int.Parse(ligne.Split(';')[2]);
                    tabNote[cpt, 0] = Tp1.ToString();
                    Tp2 = int.Parse(ligne.Split(';')[3]);
                    tabNote[cpt, 1] = Tp2.ToString();
                    Tp3 = int.Parse(ligne.Split(';')[4]);
                    tabNote[cpt, 2] = Tp3.ToString();
                    Tp4 = int.Parse(ligne.Split(';')[5]);
                    tabNote[cpt, 3] = Tp4.ToString();
                    ExI = int.Parse(ligne.Split(';')[6]);
                    tabNote[cpt, 4] = ExI.ToString();
                    ExF = int.Parse(ligne.Split(';')[7]);
                    tabNote[cpt, 5] = ExF.ToString();
                    total = Tp1 + Tp2 + Tp3 + Tp4 + ExI + ExF;
                    tabTotal[cpt, 0] = total.ToString();
                    cote = trouverCote(total);
                    tabTotal[cpt, 1] = cote;
                    ListeEtudiant.Items.Add(codeP + " " + Nom.PadRight(12) + " " + Prenom.PadRight(12) + " " + Tp1.ToString("0").PadLeft(5) + Tp2.ToString("0").PadLeft(5) + Tp3.ToString("0").PadLeft(5) + Tp4.ToString("0").PadLeft(5) + ExI.ToString("0").PadLeft(5) + ExF.ToString("0").PadLeft(5) + total.ToString("0").PadLeft(6) + " " + cote);
    
                    if (total > meilleur2)
                    {
                        if (total > meilleur1)
                        {
                            meilleur2 = meilleur1;
                            meilleur1 = total;
                            top2_Liste.Items.Insert(0, codeP + " " + Nom.PadRight(12) + " " + Prenom.PadRight(12) + " " + Tp1.ToString("0").PadLeft(5) + Tp2.ToString("0").PadLeft(5) + Tp3.ToString("0").PadLeft(5) + Tp4.ToString("0").PadLeft(5) + ExI.ToString("0").PadLeft(5) + ExF.ToString("0").PadLeft(5) + total.ToString("0").PadLeft(6) + " " + cote);
                        }
                        else
                        {
                            meilleur2 = total;
                            top2_Liste.Items.Insert(0, codeP + " " + Nom.PadRight(12) + " " + Prenom.PadRight(12) + " " + Tp1.ToString("0").PadLeft(5) + Tp2.ToString("0").PadLeft(5) + Tp3.ToString("0").PadLeft(5) + Tp4.ToString("0").PadLeft(5) + ExI.ToString("0").PadLeft(5) + ExF.ToString("0").PadLeft(5) + total.ToString("0").PadLeft(6) + " " + cote);
                        }
                        if (top2_Liste.Items.Count > 2)
                            top2_Liste.Items.RemoveAt(2);
                    }
                    cpt++;
                    gTotal += total;
                    ligne = ListeEtudiants.ReadLine();
                };
                ListeEtudiants.Close();
                moyenne = gTotal / cpt;
                Moyenne_Box.Text = ("" + moyenne);
    
            }
    
            private void Trier() // #3 methode de trie a bulle
            {
                bool tab_en_ordre = false;
                int taille = tabEtudiants.Length;
    
                while (!tab_en_ordre)
                {
                    tab_en_ordre = true;
                    for (int i = 0; i < taille - 1; i++)
                    {
    
                        if (tabEtudiants[i].CompareTo(tabEtudiants[i + 1]) < 0)
                        {
                            string tmp = tabEtudiants[i];
                            tabEtudiants[i] = tabEtudiants[i + 1];
                            tabEtudiants[i + 1] = tmp;
                            tab_en_ordre = false;
                        }
                    }
                    taille--;
                }
            }
    
    
            /* private string ReadLine()
             {
                 throw new NotImplementedException();
             }*/
    
            string cote;
    
            private string trouverCote(double total)
            {
    
    
                if (total >= 95)
                    cote = " A+ ";
                else if (total >= 92)
                    cote = " A ";
                else if (total >= 89)
                    cote = " A-";
                else if (total >= 85)
                    cote = " B+ ";
                else if (total >= 82)
                    cote = " B ";
                else if (total >= 79)
                    cote = " B-";
                else if (total >= 75)
                    cote = " C+ ";
                else if (total >= 72)
                    cote = " C ";
                else if (total >= 69)
                    cote = " C-";
                else if (total >= 65)
                    cote = " D+ ";
                else if (total >= 60)
                    cote = " D ";
                else if (total < 60)
                    cote = " E ";
                return cote;
            }
    
            private void TrierTotal()
            {
                bool tab_en_ordre = false;
                // int taille = tabEtudiants.Length;
                int taille = cpt;
    
                while (!tab_en_ordre)
                {
                    tab_en_ordre = true;
                    for (int i = 0; i < taille - 1; i++)
                    {
    
                        if (tabTotal[i, 0].CompareTo(tabTotal[i + 1, 0]) > 0)
                        {
                            Placement(i);
                            /*  string NomTmp = tabNom[i];
                              string CodePTmp = tabCodeP[i];
                              string PrenomTmp = tabPrenom[i];
                              string TotalTmp = tabTotal[i, 0];
                              string Tp1Tmp = tabNote[i, 0];
                              string Tp2Tmp = tabNote[i, 1];
                              string Tp3Tmp = tabNote[i, 2];
                              string Tp4Tmp = tabNote[i, 3];
                              string ExITmp = tabNote[i, 4];
                              string ExFTmp = tabNote[i, 5];
                              string cote = tabTotal[i, 1];
    
                              tabNom[i] = tabNom[i + 1];
                              tabCodeP[i] = tabCodeP[i + 1];
                              tabPrenom[i] = tabPrenom[i + 1];
                              tabTotal[i, 0] = tabTotal[i + 1, 0];
                              tabNote[i, 0] = tabNote[i + 1, 0];
                              tabNote[i, 1] = tabNote[i + 1, 1];
                              tabNote[i, 2] = tabNote[i + 1, 2];
                              tabNote[i, 3] = tabNote[i + 1, 3];
                              tabNote[i, 4] = tabNote[i + 1, 4];
                              tabNote[i, 5] = tabNote[i + 1, 5];
                              tabTotal[i, 1] = tabTotal[i + 1, 1];
    
                              tabNom[i + 1] = NomTmp;
                              tabCodeP[i + 1] = CodePTmp;
                              tabPrenom[i + 1] = PrenomTmp;
                              tabTotal[i + 1, 0] = TotalTmp;
                              tabNote[i + 1, 0] = Tp1Tmp;
                              tabNote[i + 1, 1] = Tp2Tmp;
                              tabNote[i + 1, 2] = Tp3Tmp;
                              tabNote[i + 1, 3] = Tp4Tmp;
                              tabNote[i + 1, 4] = ExITmp;
                              tabNote[i + 1, 5] = ExFTmp;
                              tabTotal[i + 1, 1] = cote;*/
    
                            tab_en_ordre = false;
                        }
                    }
                    taille--;
                }
            }
            private void TrierCodeP()
            {
                bool tab_en_ordre = false;
                // int taille = tabEtudiants.Length;
                int taille = cpt;
    
                while (!tab_en_ordre)
                {
                    tab_en_ordre = true;
                    for (int i = 0; i < taille - 1; i++)
                    {
    
                        if (tabCodeP[i].CompareTo(tabCodeP[i + 1]) > 0)
                        {
                            Placement(i);
                            /* string NomTmp = tabNom[i];
                             string CodePTmp = tabCodeP[i];
                             string PrenomTmp = tabPrenom[i];
                             string TotalTmp = tabTotal[i, 0];
                             string Tp1Tmp = tabNote[i, 0];
                             string Tp2Tmp = tabNote[i, 1];
                             string Tp3Tmp = tabNote[i, 2];
                             string Tp4Tmp = tabNote[i, 3];
                             string ExITmp = tabNote[i, 4];
                             string ExFTmp = tabNote[i, 5];
                             string cote = tabTotal[i, 1];
    
                             tabNom[i] = tabNom[i + 1];
                             tabCodeP[i] = tabCodeP[i + 1];
                             tabPrenom[i] = tabPrenom[i + 1];
                             tabTotal[i, 0] = tabTotal[i + 1, 0];
                             tabNote[i, 0] = tabNote[i + 1, 0];
                             tabNote[i, 1] = tabNote[i + 1, 1];
                             tabNote[i, 2] = tabNote[i + 1, 2];
                             tabNote[i, 3] = tabNote[i + 1, 3];
                             tabNote[i, 4] = tabNote[i + 1, 4];
                             tabNote[i, 5] = tabNote[i + 1, 5];
                             tabTotal[i, 1] = tabTotal[i + 1, 1];
    
                             tabNom[i + 1] = NomTmp;
                             tabCodeP[i + 1] = CodePTmp;
                             tabPrenom[i + 1] = PrenomTmp;
                             tabTotal[i + 1, 0] = TotalTmp;
                             tabNote[i + 1, 0] = Tp1Tmp;
                             tabNote[i + 1, 1] = Tp2Tmp;
                             tabNote[i + 1, 2] = Tp3Tmp;
                             tabNote[i + 1, 3] = Tp4Tmp;
                             tabNote[i + 1, 4] = ExITmp;
                             tabNote[i + 1, 5] = ExFTmp;
                             tabTotal[i + 1, 1] = cote;*/
                            tab_en_ordre = false;
                        }
                    }
                    taille--;
                }
    
            }
            private void TrierNom()
            {
                bool tab_en_ordre = false;
                int taille = cpt;
    
                while (!tab_en_ordre)
                {
                    tab_en_ordre = true;
                    for (int i = 0; i < taille - 1; i++)
                    {
    
                        if (tabNom[i].CompareTo(tabNom[i + 1]) > 0)
                        {
                            Placement(i);
    
                            tab_en_ordre = false;
                        }
                    }
                    taille--;
                }
            }
    
            private void Placement(int i) // place les informations selon la façon demander
            {
                string NomTmp = tabNom[i];
                string CodePTmp = tabCodeP[i];
                string PrenomTmp = tabPrenom[i];
                string TotalTmp = tabTotal[i, 0];
                string Tp1Tmp = tabNote[i, 0];
                string Tp2Tmp = tabNote[i, 1];
                string Tp3Tmp = tabNote[i, 2];
                string Tp4Tmp = tabNote[i, 3];
                string ExITmp = tabNote[i, 4];
                string ExFTmp = tabNote[i, 5];
                string cote = tabTotal[i, 1];
    
                tabNom[i] = tabNom[i + 1];
                tabCodeP[i] = tabCodeP[i + 1];
                tabPrenom[i] = tabPrenom[i + 1];
                tabTotal[i, 0] = tabTotal[i + 1, 0];
                tabNote[i, 0] = tabNote[i + 1, 0];
                tabNote[i, 1] = tabNote[i + 1, 1];
                tabNote[i, 2] = tabNote[i + 1, 2];
                tabNote[i, 3] = tabNote[i + 1, 3];
                tabNote[i, 4] = tabNote[i + 1, 4];
                tabNote[i, 5] = tabNote[i + 1, 5];
                tabTotal[i, 1] = tabTotal[i + 1, 1];
    
                tabNom[i + 1] = NomTmp;
                tabCodeP[i + 1] = CodePTmp;
                tabPrenom[i + 1] = PrenomTmp;
                tabTotal[i + 1, 0] = TotalTmp;
                tabNote[i + 1, 0] = Tp1Tmp;
                tabNote[i + 1, 1] = Tp2Tmp;
                tabNote[i + 1, 2] = Tp3Tmp;
                tabNote[i + 1, 3] = Tp4Tmp;
                tabNote[i + 1, 4] = ExITmp;
                tabNote[i + 1, 5] = ExFTmp;
                tabTotal[i + 1, 1] = cote;
    
            }
    
            private void Affichage_de_trie()
            {
                ListeEtudiant.Items.Clear();
                ListeEtudiant.Items.Add("Code Perm      Nom        Prénom          Tp1  Tp2  Tp3  Tp4  ExI  ExF   Tot Cote");
                ListeEtudiant.Items.Add("---------------------------------------------------------------------------------");
    
                for (int i = 0; i < tabEtudiants.Length; i++)
                {
    
                    //  ListeEtudiant.Items.Add(tabEtudiants[i].Split(';')[0] + " " + tabEtudiants[i].Split(';')[1]);
                    ListeEtudiant.Items.Add(tabCodeP[i] + "   " + tabNom[i].PadRight(12) + " " + tabPrenom[i].PadRight(12) + " " + tabNote[i, 0].PadLeft(5) + " " + tabNote[i, 1].PadLeft(5) + " " + tabNote[i, 2].PadLeft(5) + " " + tabNote[i, 3].PadLeft(5) + " " + tabNote[i, 4].PadLeft(5) + " " + tabNote[i, 5].PadLeft(5) + " " + tabTotal[i, 0].PadLeft(5) + " " + tabTotal[i, 1].PadLeft(4));
                }
            }
    
            private void Trie_code_perm(object sender, MouseButtonEventArgs e)
            {
                TrierCodeP();
                Affichage_de_trie();
            }
    
            private void Trie_Nom(object sender, MouseButtonEventArgs e)
            {
                TrierNom();
                Affichage_de_trie();
            }
    
            private void Trie_Total(object sender, MouseButtonEventArgs e)
            {
                TrierTotal();
                Affichage_de_trie();
            }
    
    
    
        }
    }
    

    j'ai vraiment besoin de votre aide sa m’empêche complètement d'avancer!!!!!

    samedi 29 novembre 2014 19:12

Toutes les réponses

  • Difficile d'entrer dans tout votre code mais mettez un point d'arrêt là ou ca plante et regardez les différentes valeurs de vos tableaux.

    Vous avez certainement un tableau qui est null ou un tableau dont la dimension est "trop petite"


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    dimanche 30 novembre 2014 10:06
  • Richard Clark

    Vous avez raison!

    généralement c'est un problème d’instanciation, il n'arrive pas à récupérer un objet quelque part .

    lundi 1 décembre 2014 16:06