【问题标题】:don't know how to convert properly不知道如何正确转换
【发布时间】:2011-12-13 14:25:58
【问题描述】:
int a = Convert.ToInt32(subjectsLabel1.Text);
int b = int.Parse(internetLabel1.Text);
int total = a+b;
label1.Text = total.ToString();

错误“输入字符串的格式不正确。”不断弹出。 我尝试使用“int.parse”和“convert.toint32”语法进行转换,但同样的错误不断出现。

*subjectLabel1 和 internetlabel1 中的值将来自数据类型为 varchar(10) 的数据库(在 Visual Studio 中完成)。

【问题讨论】:

  • 您能否向我们展示您的代码失败的一个示例值?
  • subjectsLabel1.TextinternetLabel1.Text 的值是多少?
  • 转换的方式没有问题。只是您尝试转换的值不合法。
  • 存储在 subjectLabel1 和 internetLabel1 中的值是简单的数字,例如 42、50 等。我认为这是因为它来自数据类型为 varchar(10) 的数据库,它正在寻找 10人物。但是因为40只有2个字符,所以一直报错。
  • @erwinmendoza:varchar(10) 开头的var 表示“变量”,这意味着它最多可以有 10 个字符,而不必有 10 个。

标签: c# char int


【解决方案1】:

您将这些字符串值解析为整数的方式没有任何问题。只是它们的值不代表有效的整数,因此无法解析并引发异常。您可以使用int.TryParse 方法优雅地处理这种情况:

int a;
int b;
if (!int.TryParse(subjectsLabel1.Text, out a))
{
    MessageBox.Show("please enter a valid integer in subjectsLabel1");
} 
else if (!int.TryParse(internetLabel1.Text, out b))
{
    MessageBox.Show("please enter a valid integer in internetLabel1");
}
else
{
    // the parsing went fine => we could safely use the a and b variables here
    int total = a + b;
    label1.Text = total.ToString();
}

【讨论】:

  • 消息框“请在subjectLabel1中输入一个有效的整数”显示,因此它没有计算。我之前已经测试过 int.tryparse 但它仍然不起作用。
  • @erwin mendoza,在这种情况下,您必须为subjectsLabel1.Text 输入一个有效的整数值。如果它包含 null、空字符串或无效整数,则转换将始终失败。如果您输入一些十进制值,例如“1.75”,它也会失败。在这种情况下,您需要使用decimal.Parse 并将结果存储到十进制变量中。或漂浮。或双倍。这取决于您尝试存储的值。
【解决方案2】:

如果你不确定用户是否给你一个合法的 Int32 值来转换你可以使用:

int result;

if (!int.TryParse(subjectsLabel.Text, out result))
{
 ShowAMessageToTheUser();
}
else
{
 UseResult();
}

当您尝试解析字符串时,使用 TryParse 不会引发异常。相反,它将返回 false 并且 out 参数无效。

【讨论】:

    【解决方案3】:

    如果字符串包含小数点或不是有效整数,则无法转换为 Int32。检查

    string test = "15.00"
    int testasint = Convert.ToInt32(test); //THIS WILL FAIL!!!
    

    因为 Int32 不支持小数。如果需要使用小数,请使用 Float 或 Double。

    所以在这种情况下你可以使用

    int.TryParse 
    

    还有

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-13
      • 2021-04-21
      • 1970-01-01
      • 2019-07-15
      相关资源
      最近更新 更多