目标C while while循环在输入条件满足后不退出

时间:2014-09-29 16:50:21

标签: objective-c while-loop

循环完全正常,直到输入退出条件,而不是在输入12345后退出,循环中的下一个语句执行。我已经尝试将第一个语句放在循环之外,只将计算放在循环中。

它只是忽略了这个条件。

这是代码

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

@autoreleasepool {

    int firstValue, pointsReceived;

    while(firstValue != 12345){

        NSLog(@"Enter the total points available (enter 12345 to stop program):\n");
        scanf("%i", &firstValue);

        NSLog(@"Enter the total points received: \n");
        scanf("%i", &pointsReceived);

        float percentage = (100 * pointsReceived) / firstValue;
        NSLog(@"Your total percentage is: %.2f%%", percentage);


        if(percentage >= 90){
            NSLog(@"Your grade is an A");
        }
        else if(percentage >= 80){
            NSLog(@"Your grade is a B");
        }
        else if(percentage >= 70){
            NSLog(@"Your grade is a C");

        }
        else if(percentage >= 60){
            NSLog(@"Your grade is a D");

        }
        else{
            NSLog(@"Your grade is an F");
        }


    }
    NSLog(@"Done!");
}
return 0;
}

2 个答案:

答案 0 :(得分:1)

有关Objective-C中while循环的说明,请参阅here

您的代码中发生的事情是“&#39;内部的所有内容”。在验证条件之前计算块,因此即使用户键入&#34; 12345&#34;,它仍会在检查条件之前继续在循环内运行代码。

一个简单的解决方案是添加一个&#39; if&#39;在收到用户输入后立即检查条件。

    if (firstValue == 12345) break;

答案 1 :(得分:0)

while循环仅检查循环结束时的if条件。如果用户在第一次扫描时输入了12345,则循环仍将执行,则需要在scanf后写入另一个if语句

if (firstValue == 12345)
{
    break;
}