Tôi đã xây dựng một chương trình nhỏ tính trung bình 15 số hoặc ít hơn. Có 15 hộp văn bản, giá trị mặc định của mỗi người là '0'. Chương trình biết lấy tổng của tất cả các số đã nhập và chia cho số hộp văn bản không trả về '0'. Nhưng nếu người dùng xóa nhầm một trong những '0'os trong một trong các hộp văn bản .. lỗi thời gian chạy.Cách chuyển đổi null thành 0
Nguyên Tôi giải quyết problam này bằng cách viết này "lệnh if" 15 lần (một cho mỗi text-box):
if (t1.Text == "") { tr1 = 0; }
else
{
tr1 = Double.Parse(t1.Text);
}
mã này kiểm tra nếu không có một điều trong hộp văn bản (ví dụ, tên t1), nếu đúng, chương trình đang đưa ra đôi 'tr1' (không nhầm lẫn với 't1'), giá trị '0', nếu sai, mã sẽ cho số đôi ' tr1 'văn bản của' t1 '.
tôi phải viết 'nếu' này 15 lần. tôi muốn biết nếu tôi có thể viết cùng một mã với mảng và một vòng lặp for, và làm thế nào?
đây là toàn bộ mã (xin lỗi vì tên var không tương tự như sử dụng var của.):
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);
}
Điều gì sẽ xảy ra nếu người dùng nhập Số không vào một trong các hộp? Bạn sẽ không kết thúc tính toán sai trung bình? – Shravan
Tôi sẽ sử dụng try/catch thay cho những trường hợp if/else. Điều này là bởi vì, người dùng có thể nhập văn bản quá, mà sẽ gây ra một ngoại lệ, khi bạn cố gắng Double.Parse (tx.Text) ;. – Biroka
Thánh chép/dán mã, Batman! – cHao