2012-08-01 4 views
-1

가능한 중복 :
Error message during calculation오류 메시지

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

안녕 프로그래머. 위 라인이 왜 작동하지 않는지 나는 알 수 없다. 위의 줄은 나에게 런타임 에러를 준다; 입력 문자열의 형식이 올바르지 않습니다.

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

이 코드는 것입니다 : 나뿐만 아니라 다른 질문에 게시 된 뭔가 그냥 0 대신에 예외 같은

의 반환 잘못되면

+2

'Label9.Text' 또는'Label6.Text' (어쩌면 둘 다)에는 올바른 숫자 형식이 없습니다. –

+0

num 형식으로 설정하는 방법은 무엇입니까? – Stuck

+0

이것은 텍스트 값 중 하나가 숫자가 아님을 의미합니다 (예 : "1234"). 어쩌면 "숫자"가 너무 커서 int 값에 맞지 않을 수 있습니다. "1245678987654321"또는 10 진수 형식을가집니다. "1234.0"이거나 숫자가 아닙니다. "1234s". –

답변

2

, 대신 int.tryParse()를 사용하려고 그것은 "은"이 코드는 콘솔에 "25"을 작성합니다

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

문자열로 구문 분석 질수 있기 때문에, 콘솔에 "0"을 쓰기 becau 정수로 "5"를 구문 분석 할 수 있습니다.

+0

http://msdn.microsoft.com/en-us/library/system.int32.tryparse(v=vs.90).aspx – wterbeek

+0

감사합니다 :) 완벽하게 작동합니다! – Stuck

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