-1

可能重复:
计算期间的错误消息

int totalValue = 0;
    totalValue = int.Parse(Label9.Text) * int.Parse(Label6.Text);
    Label8.Text = totalValue.ToString();

嗨,程序员。我无法弄清楚为什么上面的行不起作用。上面的行给了我一个运行时错误,它说;输入字符串的格式不正确。

4

3 回答 3

2

正如我在另一个问题中发布的那样,尝试int.tryParse()改用,如果出现问题,它只会返回 0 而不是那个异常

像这样:

  int a;
  int b;
  int.TryParse("a",out a);
  int.TryParse("5",out b);
  int totalValue = a * b;
  Console.WriteLine(totalValue.ToString());

此代码会将“0”写入控制台,因为它无法将“a”解析为字符串

  int a;
  int b;
  int.TryParse("5",out a);
  int.TryParse("5",out b);
  int totalValue = a * b;
  Console.WriteLine(totalValue.ToString());

此代码会将“25”写入控制台,因为它可以将“5”解析为整数

于 2012-08-01T06:59:04.127 回答
1

如果不可能,您应该尝试解析这些值并显示错误,如下所示。

int totalValue = 0;
int firstValue, secondValue;
if (!int.TryParse(Label9.Text, out firstValue))
  throw new Exception("Text of label 9 wasn't a number);
if (!int.TryParse(Label6.Text, out secondValue))
  throw new Exception("Text of label 6 wasn't a number);

totalValue = firstValue * secondValue;
Label8.Text = totalValue.ToString();
于 2012-08-01T07:00:17.090 回答
1

这意味着一个或两个输入字符串不是用于解析的有效格式。

检查 和 中包含的值Label9Label6确保它们的格式和范围正确。

或者,将其作为转换过程的一部分进行检查:

string str = "xyzzy";
int num;
bool ok = int.TryParse (str, out num);
if (!ok) {
    // Generate error and return.
}

// Use num for whatever.

对于您的特定代码,您可以使用类似的东西(包括表单上的错误指示器):

int num1, num2, prod = 0;
LabelErr.Text = "";
if (int.TryParse (Label9.Text, out num1) && int.TryParse (Label6.Text, out num2))
    prod = num1 * num2;
else
    LabelErr.Text = "One or both input values are invalid";
Label8.Text = prod.ToString();
于 2012-08-01T06:59:05.743 回答