如果在Objective-c中的switch case中有语句

时间:2014-12-01 07:04:37

标签: ios objective-c

我知道堆栈溢出有几个这样的问题,但问题是它无法解决我的问题。

我想在switch case中显示if语句。

这是我的代码

 NSMutableArray *stdMarks = [[NSMutableArray alloc]initWithObjects:@"100", @"70", @"97", @"11", @"59", nil];

    int marksObtained;

    for (int i= 0; i < [stdMarks count]; i++) {
        marksObtained += [[stdMarks objectAtIndex:i] integerValue];
    }

    int totalMarks = 500;
    int percentage = (marksObtained * 100)/totalMarks;

    NSLog(@"The total marks are: %d", marksObtained);
    NSLog(@"The percentage is: %d", percentage);
    NSLog(@"The total numbers of subjects are: %d", [stdMarks count]);


    switch (percentage) {
        case 1:
            if (percentage >= 70) {
                NSLog(@"You get 50 percent fee concession");
            }
            break;
        case 2:
            if (percentage >= 60) {
                NSLog(@"You get 45 percent fee concession");
            }
            break;
        default:
            NSLog(@"you do not qualify");
            break;
    }

无论百分比是多少,我总是会得到默认答案“你没有资格”。

我做错了什么

请帮帮我

2 个答案:

答案 0 :(得分:2)

这是因为交换机正在馈送percentage,只能满足1%和2%的需求,所以那些if语句永远不会触发因为进入这些情况,它们必须低于if语句

我的建议是删除switch语句,因为它似乎没必要,只要if / else语句包含你想要的范围

答案 1 :(得分:0)

在您的代码中,如果您的百分比不等于运行1或2,则它将变为默认值。

switch (percentage) { <---- this percentage, you only provide the case of 1 and 2.
        case 1:
            if (percentage >= 70) {
                NSLog(@"You get 50 percent fee concession");
            }
            break;
        case 2:
            if (percentage >= 60) {
                NSLog(@"You get 45 percent fee concession");
            }
            break;
        default:
            NSLog(@"you do not qualify");
            break;
    }
猜测你需要改变开关中的百分比(百分比)。

更新:

if (percentage >= 70) {
    NSLog(@"You get 50 percent fee concession");
}
else if (percentage >= 60) {
    NSLog(@"You get 45 percent fee concession");
}
else{
    NSLog(@"you do not qualify");
}

更新: 如果你想使用开关盒做到这一点: 百分比> = 70

switch (percentage)
case 70:
case 71:
case 72:
case 73:
.
.
.
case 100:
NSLog(@"You get 50 percent fee concession");
break;
case 60:
.
.
.

等等非常愚蠢,所以if else案例更合适