0

bx3.text总结所有to时遇到问题t2.textbx3.text首先我用空间分割

    private void total()
    {
        string[] ps = bx3.Text.Split(new string[] {" "}, StringSplitOptions.None );
        t2.Text = ps.Select(x => Convert.ToInt32(x)).Sum().ToString();
    }

我确实尝试过t2.text = ps[1],显示的数字是正确的。但是当我试图总结一切时,我得到了错误

(x => Convert.ToInt32(x)) 上的“输入字符串格式不正确”

bx3.text 充满了由单个空格分隔的用户输入数字“”

4

2 回答 2

2

尝试这个:

 string output = ps.Select(x =>
                                { 
                                    int myInt = 0;
                                    int.TryParse(x, out myInt);
                                    return myInt;
                                })
                                .Sum().ToString();

上面的代码将对 ps 数组中的所有整数求和,并将省略所有非整数值。

第一种情况:如果 x 是整数 (x=1)

  int myInt = 0;
  int.TryParse(x, out myInt); // change value of myInt to 1, because x is integer
  return myInt; // return 1

第二种情况:如果 x 不是整数 (x="aaa")

  int myInt = 0;
  int.TryParse(x, out myInt); // don't change value of myInt, because x is not integer
  return myInt; // return 0

如果 x 不是整数函数 TryParse 总是将 myInt 的值设置为零(msdn doc)。

于 2012-12-09T10:30:37.423 回答
1

您的字符串中有无效字符。
因此,如果 bx3.Text 的内容 = "1 2 3 4 5",那么它将正常工作。

IE,

        bx3.Text = "1 2 3 4 5";
        string[] ps = bx3.Text.Split(new string[] {" "}, StringSplitOptions.None );
        t2.Text = ps.Select(x => Convert.ToInt32(x)).Sum().ToString();
         Console.WriteLine(t2.Text);

将打印出来15
您可以使用过滤掉无效字符串TryParse

像这样:

            string bx3 = "1 2 3 4 5abc d e 6";
            string[] ps = bx3.Split(new string[] { " " }, StringSplitOptions.None);
            int a =0;
            Console.WriteLine(ps.Where(x=>Int32.TryParse(x, out a)).Select(x => Int32.Parse(x)).Sum().ToString());   

会打印出来16

于 2012-12-09T10:29:19.580 回答