Ho creato un piccolo programma che calcola la media di 15 numeri o meno. Ci sono 15 caselle di testo, il cui valore predefinito è '0'. Il programma sa di ottenere la somma di tutti i numeri digitati e di dividerli per numeri di caselle di testo che non restituiscono '0'. Ma se l'utente cancella erroneamente uno degli "0" in una delle caselle di testo .. errore di runtime.Come trasformare null a 0
Inizialmente ho risolto questo problam scrivendo questo "if" 15 volte (una per ogni casella di testo):
if (t1.Text == "") { tr1 = 0; }
else
{
tr1 = Double.Parse(t1.Text);
}
controlla questo codice se non c'è una cosa in casella di testo (per esempio, chiamato t1), se è vero, il programma sta dando il doppio 'tr1' (non confondere con 't1'), il valore di '0', se falso, il codice dà il doppio ' tr1 'il testo di' t1 '.
ho dovuto scrivere questo 'se' 15 volte. volevo sapere se posso scrivere lo stesso codice con matrici e un ciclo for, e come?
qui è l'intero codice (mi dispiace per i nomi var non sono simili a l'uso di 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);
}
Cosa succede se l'utente inserisce uno Zero in una delle caselle? Non finiresti per calcolare la media sbagliata? – Shravan
Vorrei usare try/catch al posto di quelli if/else. Questo perché, l'utente può anche inserire del testo, che causerà un'eccezione, quando provi a Double.Parse (tx.Text) ;. – Biroka
Holy copia/incolla codice, Batman! – cHao