2016-10-06 245 views
-4

在下面的代码中,我遇到了这个问题,当我第一次运行它时它运行得很好,但在随后的循环中,当我选择选项1时什么也没有显示出来只是去回到“菜单”,它只在第一时间有效,之后没有时间,有人能解释这个问题吗?while循环在if循环中while循环中

#include <iostream> 
#include <string> 
#include <vector> 
using namespace std; 

int main() 
{ 
    int choice=0; 
    while(choice != 2){ 
     cout << "(1)Create" << endl; 
     cout << "(2)Exit" << endl; 
     cin >> choice; 
     if(choice == 1){ 
      int choice2; 
      while(choice2 != 7){ 
       cout << "You chose one " << endl; 
       cin >> choice2; 
      } 
     } 
    } 
} 
+3

你很幸运!今天在stackoverflow.com上,我们正在运行一次性促销,名为“回答你自己的问题日”。我们已经在您的计算机上秘密地放置了一种称为“调试器”的高级工具。使用这种最先进的技术,您可以逐步执行您的程序,一次一行,并检查所有变量的值,并确定您的代码为什么完全由您自己完成!不要错过这个激动人心的机会来回答你自己的问题。只有今天,在stackoverflow.com上! –

+0

是否有必要?,我是新来的,我有麻烦,这是一个逻辑问题,不是代码问题,所以调试器不会帮助 – Xavier

+0

@Xavier你能提供你给出的示例输入。还提供您获得的示例输出。 – PRP

回答

0

我不明白你的问题,但是这个工作对我来说很好...(真的是相同的代码,只是整洁)。

int main() 
{ 
int choice = 0; 

    while (choice != 2) 
    { 
     std::cout << "(1)Create" << std::endl; 
     std::cout << "(2)Exit" << std::endl; 

     std::cin >> choice; 

     if (choice == 1) 
     { 
      int choice2 = 0; 

      while (choice2 != 7) 
      { 
       std::cout << "You chose one " << std::endl; 
       std::cin >> choice2; 
      } 
     } 
    } 
    return 0; 
} 
+0

非常感谢您的帮助nrocboc莫名其妙地比choice2 = 0使所有的区别你有任何想法,为什么这是 – Xavier

+0

choice2从来没有被设置回7以外的东西。 – nrocboc

+0

谢谢你的帮助,而不是一个saracastic ******* – Xavier

0

问题可能是,你在声明后没有初始化choice2变量,这意味着它包含垃圾值。

+0

nrocboc exaplained对我来说,但有一件事,我不知道如果choice2包含垃圾值,当我按下一个为什么它只是跳过整个while循环,而不是陷入无限循环,只是好奇 – Xavier

+0

当你在while循环中为选择2输入1时,它不会进入无限循环,它会等待你在cin >> choice2中给出另一个选择2,因为choice2!= 7,一旦尝试并使用调试,你将会理解问题 –