2016-10-06 15 views
-4

다음 코드에서는 처음에는 잘 작동하지만 처음에는 옵션 1을 선택하면 후속 루프에서이 문제가 발생합니다. "메뉴"로 되돌아 가면 처음으로 작동하고, 그 다음에는 아무런 문제가 없으며 누군가가 문제를 설명 할 수 있습니까?while 루프 while 루프 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에서 "Answer Your Own Question Day"라는 일회성 프로모션을 운영하고 있습니다. 우리는 비밀리에 컴퓨터에 "디버거"라는 고도의 도구를 배치했습니다. 이 최첨단 기술을 사용하면 한 번에 한 줄씩 실행하면서 프로그램을 단계별로 실행하고 모든 변수의 값을 검사하고 자신의 코드가 자신이하고있는 일을 정확히하는 이유를 판단 할 수 있습니다 ! 자신의 질문에 대답 할 수있는이 흥미 진진한 기회를 놓치지 마십시오. 오직 오늘, 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

어쨌든 choice2 = 0보다 많은 도움을 주신 nrocboc에게 감사드립니다. 왜 이것이 다른 이유인지 알 수 있습니까? – Xavier

+0

choice2는 7 이외의 다른 설정으로 되돌아 가지 않았습니다. – nrocboc

+0

도와 주셔서 감사합니다. saracastic ******* – Xavier

0

문제는 choice2 변수를 선언 한 다음 초기화하지 않았기 때문에 가비지 값이 있음을 의미합니다.

+0

nrocboc은 나를 제외하고는 하나의 일을합니다. 선택 사항 2에 가비지 값이 포함되어있는 경우 그 이유는 무엇입니까? 이유는 무한 루프에 잡히지 않고 전체 루프를 건너 뛴 이유는 단지 호기심입니다 – Xavier

+0

내부 루프에서 선택 2를 입력 할 때 루프가 무한 루프에 빠지지 않을 것입니다. 선택 2! = 7이기 때문에 다른 선택 2을 할 때까지 기다릴 것입니다. 일단 디버깅을 시도하고 사용하면 이해할 수 있습니다. 문제 –