2016-02-14 159 views
0

我一直有一個問題,得到的if語句正常工作的代碼。C++ while語句,嵌套if else

我有我需要它的一切,只是我們應該有多個條目輸入,它只是自動使用響應和else語句不起作用。

int main() 
{ 
    string dep = "Deposit";   
    string with = "Withdrawl";  
    string bal = "Balance";   

    char choice;     

    cout << "PLease enter options A, B, C, or Q to quit.\n"; 
    cin >> choice; 

    switch (choice) //to make them all the same, same as using toUpper 
    { 
     case 'a': 

     case 'A': 
      cout << ""; 
      break; 

     case 'b': 

     case 'B': 
      cout << ""; 
      break; 

     case 'q': 

     case 'Q': 
      cout << ""; 
      break; 
    } 

    int count = 1; 

    while (count <= 4) 
    { 
     if (choice == 'a' || 'A') 
      cout << dep << endl; 
     else if (choice == 'b' || 'B') 
       cout << with << endl;    
      else if(choice == 'c' || 'C')   
        cout << bal << endl;    
       else 
        (choice !='a' && choice !='b' && choice !='c'); 

     cout << "that is invalid, PLease enter options A, B, C, or Q to quit.\n"; 

     ++count ; 
    } 

    system ("PAUSE"); 

    return 0; 
} 
+2

'if(choice =='a'||'A')'不符合您的想法。您需要'if(choice =='a'|| choice =='A')'等。注意:您也可以將所有輸入轉換爲大寫或小寫以減少測試。 –

+3

另外,'else(choice!='a'&& choice!='b'&& choice!='c');'缺少'if',並且不應該有';'打算在那裏完成。 – jogojapan

+2

最後,您不會在循環中讀取新的用戶輸入。您只需循環四次原始輸入字符即可。 – jogojapan

回答

1

您需要解決這樣的條件語句:

if (choice == 'a' || choice == 'A') 

你總是會導致第一個條件得到滿足,因爲「A」等於什麼十進制數65

+0

我建議您查看您的推理和運營商優先級。如果我使用另一個校驗序列,其中'A'不是0x41,你的理由是否仍然成立? –

+0

我實際上試圖刪除我的答案,但堆棧交換應用程序不會讓我,當我嘗試在瀏覽器中訪問該網站時,應用程序崩潰... –

+1

此外,要回應您的評論, ==''在'||'之前,並且'A'將總是等於大於0的某個整數,所以我看不出我的推理在這裏有問題。 –

-1

if(choice == 'a'||'A'),電腦先運行'a'||'A',然後返回1(在bool中),然後運行 choice == 1,根據你的代碼,沒有choice == 1,所以if中的代碼不會運行。

+3

實際上,'=='比'||'具有更高的優先級。 – jogojapan