好的,我有一个简单的计算无法正常工作。
我将给出一个非常基本的问题示例。
我有一个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函数是否导致问题。我敢肯定这是我真的很傻。
有人可以帮忙吗?
由于
答案 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的其他修复)