使用if语句的iOS目标C编程Xcode

使用if语句的iOS目标C编程Xcode,ios,objective-c,Ios,Objective C,所以我尝试在一个应用程序中使用if语句来计算一个人的体重指数(BMI)。 我需要用户能够输入公制或英制单位的重量和高度,我真的希望能够让用户甚至输入公制重量,例如,和英制高度。 我认为使用if语句最好,下面是我的代码。目前我对if语句有警告,它只是忽略它们。非常感谢你的帮助 - (IBAction)calculateProcess:(id)sender { float cm = [_cmHeight.text floatValue]; float feet = [_feetHei

所以我尝试在一个应用程序中使用if语句来计算一个人的体重指数(BMI)。 我需要用户能够输入公制或英制单位的重量和高度,我真的希望能够让用户甚至输入公制重量,例如,和英制高度。 我认为使用if语句最好,下面是我的代码。目前我对if语句有警告,它只是忽略它们。非常感谢你的帮助

- (IBAction)calculateProcess:(id)sender {
    float cm = [_cmHeight.text floatValue];
    float feet = [_feetHeight.text floatValue];
    float inches = [_inchesHeight.text floatValue];
    float kg = [_kgWeight.text floatValue];
    float stone = [_stoneWeight.text floatValue];
    float pound = [_poundWeight.text floatValue];
    float height;
    float mass;

    if (cm == 0){
        float height = 0.3048*feet + 0.0254*inches;
    } else {
        float height = cm/100;
    }

    if (kg == 0){
        float mass = (6.35029*stone) + (0.453592*pound);
    } else {
        float mass = cm/100;
    }

    float bmi = mass/(height*height);
    [_resultLabel setText:[NSString stringWithFormat:@"%.2f", bmi]];
}

if-else块重新声明堆栈变量
height
mass
,因此if-else块后面的代码将看不到条件结果。改变这种方式

// ...
float height;
float mass;

if (cm == 0){
    // see - no float type
    height = 0.3048*feet + 0.0254*inches;
} else {
    height = cm/100;
}

if (kg == 0){
    mass = (6.35029*stone) + (0.453592*pound);
} else {
    mass = cm/100;
}
顺便说一句,这两种说法都可以更简洁地表述如下:

height = (cm == 0)? 0.3048*feet + 0.0254*inches : cm/100;
mass = (kg == 0)? (6.35029*stone) + (0.453592*pound) :  cm/100;

您应该发布您看到的警告,但我在您发布的代码中立即看到的一个问题是您在
if
else
子句中编写了(例如)
float height=…
。这将创建一个名为
height
的新变量,用于防止修改if语句上方定义的变量
height
。在if和else子句中,您应该只写:
height=…
而不带
float
。。这里真正的问题是。。你的问题是什么?我认为使用三元运算符使语句“更简洁”没有好处。另外,if语句不应该是
if(cm==0.0f)
?我不确定我是否理解。。。你的意思是说更简洁无益,还是说它不更简洁?那么,你是不是建议在三元子句前面加一个“如果”?不应该。哦,我明白了,你的意思是比较中的数字文本应该是文本浮点0.0,并键入“f”。对读者来说,它没有那么模棱两可,但由于表达式中有隐式转换,编译器就很清楚了,而且功能完全相同。对不起,我只是觉得这些表达式太复杂了,无法在一行中使用三元运算符、赋值和数学。好的,非常感谢各位,尤其是danh。效果很好。为了澄清一下,如果我在id语句中声明一个变量,它只能保留在if语句中吗?