我尝试将文本输入转换为int
我可以繁殖并显示产品,但每当我尝试将文本框内容解析为int时,我都会得到&# 34;无法将bool转换为int" 错误消息。代码如下:
private void button2_Click_1(object sender, EventArgs e)
{
int Int1;
int Int2;
int Product;
string Text1;
string Text2;
Text2 = textBox2.Text;
Text1 = textBox1.Text;
Int1 = int.TryParse(Text1, out Int1);
Int2 = int.TryParse(Text2, out Int2);
Product = Int1 * Int2;
listBox1.Items.Add(textBox1.Text);
listBox1.Items.Add(textBox2.Text);
listBox1.Items.Add(Product);
}
不要知道我哪里出错了。
答案 0 :(得分:2)
TryParse返回boolean,它告诉您解析是否成功。尝试
CategoryStore
答案 1 :(得分:2)
这种情况正在发生,因为int.TryParse(Text1, out Int1);
int.TryParse(Text2, out Int2);
返回TryParse
结果位于带有bool
的参数中,以解决您可以删除归因的问题。
out
如果您使用int.TryParse(Text1, out Int1);
int.TryParse(Text2, out Int2);
Product = Int1 * Int2;
,则应在TryParse
中使用,以检查一切是否成功。
if
如果您不需要此行为,则应考虑使用if(int.TryParse(Text1, out Int1) && int.TryParse(Text2, out Int2))
{
Product = Int1 * Int2;
listBox1.Items.Add(textBox1.Text);
listBox1.Items.Add(textBox2.Text);
listBox1.Items.Add(Product);
}
,因为它会返回已解析的值。
Parse
答案 2 :(得分:1)
很自然。 TryParse返回布尔值。 out 参数是TryParse的结果。查看此帖子:How the int.TryParse actually works
答案 3 :(得分:1)
TryParse根据成功或失败的尝试返回true或false。如果您确定用户仅输入数字,则可以使用
Int1=int.Parse(textBox1.Text)
Int2=int.Parse( textBox2.Text)
答案 4 :(得分:1)
TryParse()
返回bool
,out
参数已经解析了值Int1
和Int2
如果解析成功,您必须这样做:< / p>
if(!int.TryParse(Text1, out Int1))
{
// show validation message
return;
}
if(!int.TryParse(Text2, out Int2))
{
// value not valid int
return;
}
当我们想要控制程序流时使用 TryParse()
,你必须使用if
块来处理它,否则无效输入会导致程序抛出异常
输入字符串的格式不正确
答案 5 :(得分:1)
您的代码将int.TryParse的结果分配给您的int。它不能,因为返回值是一个bool,表明解析是否有效。
Int1 = int.TryParse(Text1, out Int1);
详细了解documentation。
答案 6 :(得分:1)
试试这个..
Int1 = int.Parse(textBox1.Text);
答案 7 :(得分:1)
您应该使用TryParse
的返回值来确定解析是否成功。它返回bool
表示文本已转换为int
,因此您应该按如下方式更改代码:
private void button2_Click_1(object sender, EventArgs e) {
int Int1;
int Int2;
int Product;
string Text1;
string Text2;
Text2 = textBox2.Text;
Text1 = textBox1.Text;
listBox1.Items.Add(textBox1.Text);
listBox1.Items.Add(textBox2.Text);
if( int.TryParse(Text1, out Int1) && int.TryParse(Text2, out Int2)) {
Product = Int1 * Int2;
listBox1.Items.Add(Product);
} else {
listBox1.Items.Add("<incorrect input>");
}
}
如果TryParse
个来电之一的返回值为false
,则不会计算产品,并会显示错误消息&#34;&#34;已添加到listBox1
而非产品。