当前位置:  开发笔记 > 编程语言 > 正文

如何将null转为0

如何解决《如何将null转为0》经验,为你挑选了2个好方法。

我建立了一个小程序来计算15个或更少的平均数.有15个文本框,每个文本框的默认值为"0".程序知道获取所有类型数字的总和,并将其除以不返回"0"的文本框的数量.但是如果用户错误地删除了其中一个文本框中的'0'之一..运行时错误.

最初我通过写这个" if语句 "15次(每个文本框一个)来解决这个问题:

 if (t1.Text == "") { tr1 = 0; }
 else
 {
     tr1 = Double.Parse(t1.Text);
 }

此代码检查文本框中是否有东西(例如,名为t1),如果为true,则程序给出 'tr1'(不要与't1'混淆),值为'0'如果假,代码给出了 'TR1"T1"的文字.

我不得不写'如果'15次.我想知道我是否可以用数组和for循环编写相同的代码,以及如何?

这是整个代码(抱歉var名称与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);
}

cHao.. 10

Double.TryParse(t1.Text.Trim(), out tr1);

将tr1设置为文本框的数值,如果由于某种原因无法将其转换为0.0.如果转换成功,它也将返回true,如果失败则返回false,但如果默认值为0.0,则不关心返回值.

额外奖励:如果有人决定将"这不是数字",则不会抛出异常.进入文本框.它只会看到值为0.

要在数组中执行此操作...

TextBox t[] = { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15 };
double tr[] = new double[t.Length];

for (int i = 0; i < t.Length; ++i)
{
    Double.TryParse(t[i].Text.Trim(), out tr[i]);
}

更新:

注意,期望能够计算包含0的数字的平均值是完全合理的.为此:

TextBox t[] = { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15 };
double tr[] = new double[t.Length];
int valid_count = 0;

for (int i = 0; i < t.Length; ++i)
{
    if (Double.TryParse(t[i].Text.Trim(), out tr[i])) ++valid_count;
}

将TextBoxes的默认值设置为空白(""),然后您将知道用户输入的合法数量为0,以及有多少空白.除以总和valid_count得到准确的平均值.(但可以肯定的是valid_count > 0,或者你可能会得到一个被零除的例外.)



1> cHao..:
Double.TryParse(t1.Text.Trim(), out tr1);

将tr1设置为文本框的数值,如果由于某种原因无法将其转换为0.0.如果转换成功,它也将返回true,如果失败则返回false,但如果默认值为0.0,则不关心返回值.

额外奖励:如果有人决定将"这不是数字",则不会抛出异常.进入文本框.它只会看到值为0.

要在数组中执行此操作...

TextBox t[] = { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15 };
double tr[] = new double[t.Length];

for (int i = 0; i < t.Length; ++i)
{
    Double.TryParse(t[i].Text.Trim(), out tr[i]);
}

更新:

注意,期望能够计算包含0的数字的平均值是完全合理的.为此:

TextBox t[] = { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15 };
double tr[] = new double[t.Length];
int valid_count = 0;

for (int i = 0; i < t.Length; ++i)
{
    if (Double.TryParse(t[i].Text.Trim(), out tr[i])) ++valid_count;
}

将TextBoxes的默认值设置为空白(""),然后您将知道用户输入的合法数量为0,以及有多少空白.除以总和valid_count得到准确的平均值.(但可以肯定的是valid_count > 0,或者你可能会得到一个被零除的例外.)



2> Borealid..:

当然,制作一个double tr[15]和相应的文本字段数组.

然后使用:

for (int i = 0; i < 15; i++) {
    if (t[i].Text == "") { 
        tr[i] = 0;
    } else {
        tr[i] = Double.Parse(t[i].Text);
    }
}

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有