1

わかりました、私はうまくいかない単純な計算をしました。

問題の非常に基本的な例を挙げます。

KGボタンとポンドボタンがあります。KG ボタンが選択されている場合、浮動重量は私の重量テキスト ボックスの値です。[ポンド] ボタンが選択されている場合は、重量テキスト ボックスの数値を 2.2 で割り、浮動重量にします。

このための if 関数を作成しました。最後に、体重と年齢を乗算します。年齢は、年齢のテキスト ボックスにある数字です。

-(IBAction)calculate;
{
    //put age value into a float
    float age = ([valAge.text floatValue]);


    //Put weight value into a float
    if (btnKG.selected = YES)
    {
        float weight = ([valWeight.text floatValue]);
    }
    else
    {
        float weight = ([valWeight.text floatValue]/2.20462);
    }



    //calculate
    float bmr = weight * age;



}

計算段階で、重みが宣言されていない識別子であるというエラーが表示されます。年齢的にも問題ありません。

if 関数が問題を引き起こしていると推測しています。私が見落としているのは本当にばかげたものだと確信しています。

誰でも助けてもらえますか?

ありがとう

4

2 に答える 2

1

ローカル変数 ( などfloat weight = ...) を宣言すると、最も内側の中括弧で囲まれたブロック内でのみ表示されます。そう、

if (...)
{
    float weight = ...;
    // weight is visible here
}

// weight is not visible here

float weight;if; の前に移動する必要があります。このようなもの:

//Put weight value into a float
float weight;

if (btnKG.selected)
{
    weight = ([valWeight.text floatValue]);
}
else
{
    weight = ([valWeight.text floatValue]/2.20462);
}



//calculate
float bmr = weight * age;

(編集:Anoopからの他の修正を組み込みました)

于 2013-01-19T13:58:28.630 に答える
1

(btnKG.selected = YES)間違った使い方です(btnKG.selected == YES)

=割り当てに使用されます。

==比較用です。

あなたのコードでは、誤って値 YES を btnKG.Selected に割り当てています。これが、期待される結果が得られない理由です。

また、

float weight はブロック { および } に対してローカルです。そして、後で計算で使用しようとしています。メソッド内の { & } の外側で変数の重みを宣言して、現在のメソッドで使用できるようにします。

于 2013-01-19T13:56:14.137 に答える