1

好的,伙计们,我有一个不起作用的简单计算。

我将给出一个非常基本的问题示例。

我有一个公斤按钮和一个磅按钮。如果选择 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

(btnKG.selected = YES)使用不当(btnKG.selected == YES)

=用于评估。

==是为了比较。

在您的代码中,您错误地将值 YES 分配给 btnKG.Selected,这就是您没有得到预期结果的原因。

还,

float weight 是块 { 和 } 的本地。您正在尝试稍后在计算中使用它。在方法内部声明 { & } 的变量权重,以便您可以在当前方法中使用它。

于 2013-01-19T13:56:14.137 回答
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 回答