if功能不起作用的简单计算

时间:2013-01-19 13:54:55

标签: objective-c

好的,我有一个简单的计算无法正常工作。

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

我有一个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函数是否导致问题。我敢肯定这是我真的很傻。

有人可以帮忙吗?

由于

2 个答案:

答案 0 :(得分:1)

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

不正确

=用于分配。

==用于比较。

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

此外,

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

答案 1 :(得分: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的其他修复)