2014-09-29 85 views
0

循環很好地工作,直到輸入退出條件,而不是在進入12345後退出,循環中的下一條語句執行。我試過把第一個語句放在循環之外,只把計算放在循環中。一旦滿足輸入條件,目標C while循環就不會退出

它只是忽略了條件。

這是代碼

#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; 
} 
+0

後寫的,但我沒有看到你設置firstValue價值的循環中。 – 2014-09-29 16:55:36

+0

如果你希望它立即停止,只需在firstValue的scanf後面插入一個if,如果它等於12345,就打開它。 – billpcs 2014-09-29 17:06:47

回答

1

爲的說明見here而在Objective-C迴路。

代碼中出現的情況是,'while'塊內的所有內容都是在條件被驗證之前計算出來的,因此即使用戶鍵入了「12345」,在檢查條件之前它仍然繼續運行循環內的代碼。

一個簡單的解決方案是在接收用戶輸入之後添加一個'if'語句來檢查條件。

if (firstValue == 12345) break; 
+0

謝謝,我想通了,我必須這樣做。支付第二雙眼睛。 – user3015009 2014-09-29 17:47:39

0

while循環僅檢查循環結束時的if條件。如果用戶在第一scanf函數輸入12345環路仍將執行,則需要另一個if語句scanf函數

if (firstValue == 12345) 
{ 
    break; 
} 
+0

謝謝,我想通了,我必須這樣做。支付第二雙眼睛。 – user3015009 2014-09-29 17:47:18

+0

無法將兩者都標記爲答案,因此只需標記一個即可解決。 – user3015009 2014-09-29 17:51:08

相關問題