我在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];
}
答案 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;