int totalValue = 0;
totalValue = int.Parse(Label9.Text) * int.Parse(Label6.Text);
Label8.Text = totalValue.ToString();
嗨程序員。我無法弄清楚爲什麼上面的行不起作用。上面的行給我一個運行時錯誤,說: 輸入字符串格式不正確。
int totalValue = 0;
totalValue = int.Parse(Label9.Text) * int.Parse(Label6.Text);
Label8.Text = totalValue.ToString();
嗨程序員。我無法弄清楚爲什麼上面的行不起作用。上面的行給我一個運行時錯誤,說: 輸入字符串格式不正確。
正如我在其他問題發表爲好,儘量用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」到控制檯,因爲它不能解析「一」爲一個字符串
int a;
int b;
int.TryParse("5",out a);
int.TryParse("5",out b);
int totalValue = a * b;
Console.WriteLine(totalValue.ToString());
該代碼會寫「25」到控制檯,becau它可以解析「5」到一個整數
這意味着一個或兩個輸入字符串不是有效的解析格式。
檢查Label9
和Label6
中包含的值,以確保它們的格式和範圍正確。
另外,檢查它作爲轉換過程的一部分:
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();
你應該嘗試解析值並且如果不可能顯示錯誤,就像我在下面演示的那樣。
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();
'Label9.Text'或'Label6.Text'(可能兩者)都沒有正確的數字格式。 – 2012-08-01 06:58:10
如何將其設置爲num格式? – Stuck 2012-08-01 06:59:02
這意味着其中一個文本值不是數字(如「1234」)。也許「數字」太大而不適合int值,例如「1245678987654321」,或者它具有十進制格式,例如「1234.0」,或者它根本不是數字,例如「1234s」。 – 2012-08-01 07:01:22