Creé un pequeño programa que calcula el promedio de 15 números o menos. Hay 15 cuadros de texto, el valor predeterminado de cada uno es '0'. El programa sabe para obtener la suma de todos los números escritos y dividirlo por números de cuadros de texto que no devuelven '0'. Pero si el usuario borra por error uno de los '0'os en uno de los cuadros de texto ... error de tiempo de ejecución.Cómo convertir null en 0
Originalmente resolvieron este problam escribiendo esta "sentencia if " 15 veces (una para cada cuadro de texto):
if (t1.Text == "") { tr1 = 0; }
else
{
tr1 = Double.Parse(t1.Text);
}
comprueba este código si no hay una cosa en la caja de texto (por ejemplo, llamado t1), si es verdadero, el programa da doble 'tr1' (no confunda con 't1'), el valor de '0', si es falso, el código da doble ' tr1 'el texto de' t1 '.
tuve que escribir esto 'si' 15 veces. Quería saber si puedo escribir el mismo código con matrices y un ciclo for, ¿y cómo?
aquí es todo el código (lo siento por los nombres var no son similar al uso de var.):
private void goyouidiot_Click(object sender, EventArgs e)
{
double tr1;
double tr2;
double tr3;
double tr4;
double tr5;
double tr6;
double tr7;
double tr8;
double tr9;
double tr10;
double tr11;
double tr12;
double tr13;
double tr14;
double tr15;
if (t1.Text == "") { tr1 = 0; }
else
{
tr1 = Double.Parse(t1.Text);
}
if (t2.Text == "") { tr2 = 0; }
else
{
tr2 = Double.Parse(t2.Text);
}
if (t3.Text == "") { tr3 = 0; }
else
{
tr3 = Double.Parse(t3.Text);
}
if (t4.Text == "") { tr4 = 0; }
else
{
tr4 = Double.Parse(t4.Text);
}
if (t5.Text == "") { tr5 = 0; }
else
{
tr5 = Double.Parse(t5.Text);
}
if (t6.Text == "") { tr6 = 0; }
else
{
tr6 = Double.Parse(t6.Text);
}
if (t7.Text == "") { tr7 = 0; }
else
{
tr7 = Double.Parse(t7.Text);
}
if (t8.Text == "") { tr8 = 0; }
else
{
tr8 = Double.Parse(t8.Text);
}
if (t9.Text == "") { tr9 = 0; }
else
{
tr9 = Double.Parse(t9.Text);
}
if (t10.Text == "") { tr10 = 0; }
else
{
tr10 = Double.Parse(t10.Text);
}
if (t11.Text == "") { tr11 = 0; }
else
{
tr11 = Double.Parse(t11.Text);
}
if (t12.Text == "") { tr12 = 0; }
else
{
tr12 = Double.Parse(t12.Text);
}
if (t13.Text == "") { tr13 = 0; }
else
{
tr13 = Double.Parse(t13.Text);
}
if (t14.Text == "") { tr14 = 0; }
else
{
tr14 = Double.Parse(t14.Text);
}
if (t15.Text == "") { tr15 = 0; }
else
{
tr15 = Double.Parse(t15.Text);
}
double[] sch = { tr1, tr2, tr3, tr4, tr5, tr6, tr7, tr8, tr9, tr10, tr11, tr12, tr13, tr14, tr15 };
double total = 0;
double sorf = 0;
for (int i = 0; i != 14; i++)
{
sorf = sorf + sch[i];
if (sch[i] > 0)
{ total++; }
}
double totalic = sorf/total;
string glass = totalic.ToString();
result.Text = ("your score: " + glass);
}
¿Qué sucede si el usuario ingresa un cero en una de las casillas? ¿No terminarías calculando el promedio incorrecto? – Shravan
Usaría try/catch en lugar de esos casos if/else. Esto se debe a que el usuario también puede ingresar texto, lo que provocará una excepción, cuando intente utilizar Double.Parse (tx.Text) ;. – Biroka
Código de copiar/pegar, Batman! – cHao