2011-08-08 3 views
1

UITextField에서 오류 메시지와 관련된 주요 문제가 있습니다. IBAction buttontap id 보낸 사람 설정을 사용하여 UITextField를 탭하고 buttontap을 탭하면 선택된 UITextField에 값 +1이 추가됩니다. 내 문제는 내 UITextField 두 UITextfields 사이의 백분율로 내게 다른 UITextFields 때 "NAN"오류 메시지를 제공하는 설정을 가지고 있습니다. 더 많은 코드를 추가 할 때까지이 문제가 해결되었다고 생각했습니다. 다음은 현재 코드입니다.UITextField에서 "NAN"오류 메시지 받기

- (IBAction)buttonTap:(id)sender { 
    int value = [currentText.text intValue] + 1; 
    currentText.text = [NSString stringWithFormat:@"%d",value]; 

    int n7 = [tex.text intValue]; 
    int n8 = [tex2.text intValue]; 
    int n9 = [tex3.text intValue]; 
    int n10 = [tex4.text intValue]; 
    int n11 = [tex5.text intValue]; 
    int n12 = [tex6.text intValue]; 
    int r = n7 + n8 + n9 + n10 + n11 + n12; 
    NSString *rn = [NSString stringWithFormat:@"%d",r]; 
    [tex13 setText:rn]; 

    int n1 = [tex7.text intValue]; 
    int n2 = [tex8.text intValue]; 
    int n3 = [tex9.text intValue]; 
    int n4 = [tex10.text intValue]; 
    int n5 = [tex11.text intValue]; 
    int n6 = [tex12.text intValue]; 
    int s = n1 + n2 + n3 + n4 + n5 + n6; 
    NSString *sn = [NSString stringWithFormat:@"%d",s]; 
    [tex14 setText:sn]; 



    float firstFloat = [self.tex15.text floatValue]; 
    float secondFloat = [self.tex16.text floatValue]; 
    float answer = secondFloat/firstFloat * 100; 
    self.tex20.text = [NSString stringWithFormat:@"%.1f%%",answer]; 
} 
+1

이 firstFloat 0으로 평가 않습니다 다음과 같이 보일 수

? 그렇다면 "제로로 나누기"오류가 발생합니다. –

+0

문제는 우리에게 표시되는 코드에 없습니다. 우리는'tex','tex2', ...'tex16'의 값이 무엇인지 알지 못합니다. 그것들이 초기화되지 않았거나'tex15'가 0이라면, 그것을 설명 할 것입니다. – bdares

+0

그럼 어떻게 수정해야합니까? if 문을 사용해야합니까? – TWcode

답변

1

NAN 또는 NaN입니까? NaN은 숫자가 아니며 수학 결과가 수치로 표현 될 수없는 것을 유도 할 때 인쇄됩니다. 주석에서 지적했듯이 0으로 나누면 NaN이됩니다.

주소를 지정하는 것은 매우 간단합니다. 0으로 나누는 위치 나 NaN을 유발하는 항목을 파악하고 if/else 문을 사용하여 해당 값을 테스트합니다. 그런 다음 새 값으로 대체하거나 상황을 설명하는 레이블에 오류 메시지 문자열을 전달하십시오.

편집 :

float firstFloat = [self.tex15.text floatValue]; 
    float secondFloat = [self.tex16.text floatValue]; 

    NSString *labelOutput; 

    if (firstFloat == 0.0) 
    { 
     labelOutput = NSLocalizedString(@"Error", @"Error while dividing by zero"); 
    } 

    else 
    { 
     float answer = secondFloat/firstFloat * 100; 
     labelOutput = [NSString stringWithFormat:@"%.1f%%",answer]; 

    } 

    self.tex20.text = labelOutput; 
+0

코드 예제를 줄 수 있습니까? – TWcode

+0

물론 간단합니다. –

+0

감사합니다. – TWcode