2015-09-25 136 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循环将再次显示选项。