在UITextField中获取“NAN”错误消息

时间:2011-08-08 20:48:10

标签: iphone ios4 iphone-sdk-3.0 cocos2d-iphone

我在UITextField中遇到错误消息的主要问题。我有一个IBAction buttontap id发送器设置,当我点击UITextField并点击buttontap时,它会为所选的UITextField添加值+1。我的问题是我的UITextField,当我点击其他UITextField时,我设置两个UITextfields之间的百分比给我一个“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 个答案:

答案 0 :(得分:1)

是NAN还是NaN? NaN代表的不是数字,当你的数学结果导致无法用数字表达的东西时,它会打印出来。正如评论中所指出的,除以零将给你一个NaN。

解决它非常简单:找出除以零的位置,或者导致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;