我知道堆栈溢出有几个这样的问题,但问题是它无法解决我的问题。
我想在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;
}
无论百分比是多少,我总是会得到默认答案“你没有资格”。
我做错了什么
请帮帮我
答案 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案例更合适