2011-08-08 17 views
1

UITextField内にエラーメッセージの重大な問題があります。 UITextFieldをタップしてボタンタップをタップすると、選択されたUITextFieldに値+1が追加されます。私の問題は、私が他のUITextFieldをタップすると、2つのUITextfieldsの間でパーセンテージを思い付くようにセットアップした私のUITextFieldが "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が得られます。

これは非常に簡単です。ゼロで割る場所や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

関連する問題