简单的计算问题 [英] Simple calculation problem

查看:45
本文介绍了简单的计算问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个带有5个字段的文本框字段的窗体,



取决于字段是否有标记它会计算平均值



对于EG如果前两个字段只有标记那么



平均值=前两个字段标记计算/ 2


averageHeader = 6-4(4个空字段);



但这不起作用,代码结束tot用红色下划线



我尝试过:



I have a windows form with 5 fields of textbox fields,

depends on if the field has a mark or not it will calculate the average

For E.G if first two field only had marks then

Average = first two field marks calculation/2

averageHeader = 6-4(4 empty fields);

but this is not working , end of the code tot is underlined with red

What I have tried:

private void button10_Click(object sender, EventArgs e)
       {

           int s1, s2, s3, s4, s5, s6;
           int tot;

           int avgHeader = 6;


           if(textBoxS1.Text=="")
           {
               avgHeader = avgHeader - 1;
           }
           else
           {
               s1 = Convert.ToInt16(textBoxS1.Text);
               tot = tot + s1;


           }
           if(textBoxS2.Text=="")
           {
               avgHeader = avgHeader - 1;
           }
           else
           {
               s2 = Convert.ToInt16(textBoxS2.Text);
               tot=tot+s2;
           }
           if (textBoxS3.Text == "")
           {
               avgHeader = avgHeader - 1;
           }
           else
           {
               s3 = Convert.ToInt16(textBoxS3.Text);
               tot = tot + s3;
           }
           if (textBoxS4.Text == "")
           {
               avgHeader = avgHeader - 1;
           }
           else
           {
               s4 = Convert.ToInt16(textBoxS4.Text);
               tot = tot + s4;
           }
           if (textBoxS5.Text == "")
           {
               avgHeader = avgHeader - 1;
           }
           else
           {
               s5 = Convert.ToInt16(textBoxS5.Text);
               tot = tot + s5;
           }
           if (textBoxS6.Text == "")
           {
               avgHeader = avgHeader - 1;
           }
           else
           {
               s6 = Convert.ToInt16(textBoxS6.Text);
               tot = tot + s6;
           }

           int Average = tot / avgHeader;

           txtaverage.Text = Convert.ToString(Average);

       }

推荐答案

试试



try

private void button10_Click(object sender, EventArgs e)
       {
           int tot = 0;
           int avgHeader = 0;
           TextBox[] allBox = new TextBox[] { textBoxS1, textBoxS2, textBoxS3, textBoxS4, textBoxS5, textBoxS6 };
           foreach (TextBox txt in allBox)
               if (txt.Text != "")
               {
                   int temp;
                   int.TryParse(txt.Text.Trim(), out temp);
                   tot += temp;
                   avgHeader++;
               }
           int Average = tot / avgHeader;
           txtaverage.Text = Average.ToString();
       }





使用 LINQ





using LINQ

private void button10_Click(object sender, EventArgs e)
       {
           TextBox[] allBox = new TextBox[] { textBoxS1, textBoxS2, textBoxS3, textBoxS4, textBoxS5, textBoxS6 };
           var avg = allBox.Where(k => k.Text != "").Average(k => Convert.ToInt32(k.Text));
           txtaverage.Text = avg.ToString();
       }





注意:非数字文本格式应在前端验证



Note: Non numeric text format should be validated at front end


这篇关于简单的计算问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆