in switch case i want to print nslog as per my requirement?

106 Views Asked by At
- (IBAction)calciAction:(id)sender {

        weightBMI=(([_weightinpounds.text floatValue]) * 4.88)/((([_feet.text floatValue])+ ([_inch.text floatValue]/12)) *(([_feet.text floatValue])+ ([_inch.text floatValue]/12)));

    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
    formatter.numberStyle = NSNumberFormatterDecimalStyle;
    formatter.maximumFractionDigits = 2;
    formatter.roundingMode = NSNumberFormatterRoundUp;

    NSString *numberString = [formatter stringFromNumber:@(weightBMI)];
    NSLog(@"YOUR BMI:%@",numberString);

   // NSLog(@"Print BMI %f",weightBMI);
   // float height = (([_feet.text floatValue]) + ([_inch.text floatValue]));


    if (weightBMI>19) {
        NSLog(@"low weight");
    }
    else if ((weightBMI<=19)||(weightBMI>=24))
    {
        NSLog(@"low normal");
    }
    else if ((weightBMI<=25)||(weightBMI>=29))
    {
        NSLog(@"over weight");
    }



}

how to write in else if block which is not printed properly

2

There are 2 best solutions below

0
On

If you write code in future using swift.Because it's short. :)

 switch weightBMI {
        case Int.min..<20:
            print("low weight")
        case 20..<26:
            print("low normal")
        default:
            print("over weight")

        }
0
On

It often helps if you add "plain language" comments to your code. I'm assuming this is what you want to test:

// if weightBMI is LESS THAN 19, weight is low
// if weightBMI is GREATER THAN or EQUAL TO 19, but LESS THAN 25, weight is normal
// if weightBMI is EQUAL TO or GREATER THAN 25, weight is over

if (weightBMI < 19) 
{
    NSLog(@"low weight");
}
else if (weightBMI < 25)
{
    NSLog(@"normal");
}
else
{
    NSLog(@"over weight");
}