1

Buenas tardes el día de hoy tengo este problema con mi programa de Ventas dividida en meses que da promedio de ventas y mes de venta mayor. El problema es que al insertar las ventas y capturarlas, al darle al botón para sacar el promedio de ventas en 'n' meses da un error.

Este es el error que me da: Excepción producida: 'System.NullReferenceException' en WindowsFormsApp2.exe MesAct fue null.

A continuación mi código y la parte en donde sale el error.

introducir la descripción de la imagen aquí public Venta() { InitializeComponent(); }

    int Contador = 0;
    
    String[] Mes = new string[12]
    {
       "Enero       ",
       "Febrero     ",
       "Marzo       ",
       "Abril       ",
       "Mayo        ",
       "Junio       ",
       "Julio       ",
       "Agosto      ",
       "Septiembre  ",
       "Octubre     ",
       "Noviembre   ",
       "Diciembre   "

    };



    private void Venta_Load(object sender, EventArgs e)
    {

    }

    private void button1_Click(object sender, EventArgs e)
    {
        listBox1.Items.Add(Mes[Contador] + maskedTextBox1.Text);
        maskedTextBox1.Text = "";
        Contador++;
        
    }

    private void button4_Click(object sender, EventArgs e)
    {
        Form Forma = new Form();
        Forma.Show();
        this.Close();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        int Compi = 0, MesMayor = 0; 
        Char[] asd = new char[20];
        string MesAct = null;
        MesMayor = 0;

        for (int i = 0; i < listBox1.Items.Count; i++)
        {
           
            asd = MesAct.ToCharArray();
            MesAct = null;
            
            for (int j = 0; j < asd.Length; j++)
            {
                if (Compi == 1) { MesAct = MesAct + asd[j]; }
                if ((asd[j]) == ('-')) { Compi = 1; }
            }


            MesMayor = MesMayor + Convert.ToInt32(MesAct); Compi = 0;
        }
        MesMayor = MesMayor / listBox1.Items.Count;
        label4.Text = Convert.ToString(MesMayor);
    }

    private void button3_Click(object sender, EventArgs e)
    {

        
    }
}

}

  • ¿Responde esto a tu pregunta? [¿Qué es una NullReferenceException y cómo solucionarla?](https://es.stackoverflow.com/questions/75999/qu%c3%a9-es-una-nullreferenceexception-y-c%c3%b3mo-solucionarla) – padaleiana Sep 23 '21 at 11:32

1 Answers1

3

El error es claro:

string MesAct = null; // <<--- MesAct = null
MesMayor = 0;

for (int i = 0; i < listBox1.Items.Count; i++)
{
       
    asd = MesAct.ToCharArray(); // <<--- ERROR!!! MesAct == null

Entiendo que antes de hacer la llamada que te provoca el error deberías asignar a MesAct uno de los meses del array. Lo que no me queda tan claro es de dónde deberías sacar el índice del mes, pero debería ser algo similar a:

int n = /* ... no se de dónde deberías obtener este índice ... */
string MesAct = Mes[n];

Lo mismo el valor de MesAct viene dado por el contador i (no se, es una posibilidad):

for (int i = 0; i < listBox1.Items.Count; i++)
{ 
    string MesAct = Mes[i]; // Mueve la declaración dentro del for
eferion
  • 49,291
  • 5
  • 30
  • 72