将所有bx3.text
汇总到t2.text
时遇到问题。
首先,我将bx3.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充满了由单个空格“”
分隔的用户输入数字答案 0 :(得分: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)。
答案 1 :(得分:1)
您的字符串中包含无效字符 所以,如果bx3.Text =“1 2 3 4 5”的内容,那么它将正常工作。
是的, 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