2015-09-25 137 views
0

我有一個系統,用戶可以輸入儘可能多的輸入作爲他/他想要的並進行一些計算。While循環的C++切換語句

這裏是實現這一任務的主循環:

int main() { 
    char op; 

    while(op != 'x'){ 
     cout << "Please select: " << endl; 
     cout << "1 ---> A" << endl; 
     cout << "2 ---> B" << endl; 
     cout << "3 ---> C " << endl; 
     cout << "4 ---> D " << endl; 
     cout << "5 ---> Calculate" << endl; 
     cout << "x ---> Exit" << endl; 

     op = std::getchar(); 

     switch(op){ 
     case '1': 
      cout<<"1"; 
      break; 
     case '2': 
      cout<<"2"; 
      break; 
     case '3': 
      cout<<"3"; 
      break; 
     case '4': 
      cout<<"4"; 
      break; 
     case '5': 
      cout<<"5"; 
      break; 
     case 'x': 
      return 0; 
     default: 
      continue; 
     } 

    } 
    return 0; 
} 

然而,在控制檯中我看到了COUT語句,而不是一個兩次。示例控制檯如下所示:

Please select: 
1 ---> A 
2 ---> B 
3 ---> C 
4 ---> D 
5 ---> Calculate 
x ---> Exit 
1 
1Please select: 
1 ---> A 
2 ---> B 
3 ---> C 
4 ---> D 
5 ---> Calculate 
x ---> Exit 
Please select: 
1 ---> A 
2 ---> B 
3 ---> C 
4 ---> D 
5 ---> Calculate 
x ---> Exit 

有關如何在用戶進行選擇後僅顯示一次cout語句的任何想法?

+1

您還需要初始化'op',可能爲'x''以外的東西 – inetknght

+0

您正在輸入行,但正在讀取字符。 –

回答

2

看起來你還是得在輸入流中的某些字符後

op = std::getchar(); 

添加一行忽略從輸入流線的其餘部分。

op = std::getchar(); 
    int temp; 
    while ((temp = std::getchar()) != '\n' && temp != EOF); 
+1

是的,我相信_extra stuff_與'Enter'鍵的用法有關。 –

+0

@RSahu我添加了另一個相關的問題。你可以檢查它,如果你有興趣從這裏:http://stackoverflow.com/questions/32789578/getting-input-from-user-with-switch-c – supaplex

-1

只是看看你的代碼,你應該把一個「底線」你讀char

op=std::getchar(); 
std::cout<<endl; 

後還你可能,除非你打算不需要輸出用戶的響應說「你輸入1」。由於您的選項在用戶輸入他們的選擇之前列出,您將看到選項,然後他們很好地輸入他們的選擇,然後while循環將再次顯示選項。