2012-08-01 85 views
-1

可能重複:
Error message during calculation錯誤消息(再次)

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

嗨程序員。我無法弄清楚爲什麼上面的行不起作用。上面的行給我一個運行時錯誤,說: 輸入字符串格式不正確。

+2

'Label9.Text'或'Label6.Text'(可能兩者)都沒有正確的數字格式。 – 2012-08-01 06:58:10

+0

如何將其設置爲num格式? – Stuck 2012-08-01 06:59:02

+0

這意味着其中一個文本值不是數字(如「1234」)。也許「數字」太大而不適合int值,例如「1245678987654321」,或者它具有十進制格式,例如「1234.0」,或者它根本不是數字,例如「1234s」。 – 2012-08-01 07:01:22

回答

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」到控制檯,因爲它不能解析「一」爲一個字符串

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」到一個整數

+0

http://msdn.microsoft.com/en-us/library/system.int32.tryparse(v=vs.90).aspx – wterbeek 2012-08-01 06:59:45

+0

謝謝:)它完美的作品! – Stuck 2012-08-01 07:11:55

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(); 
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();