2013-06-09 7 views
0
cin >> subchoice; 
     switch(subchoice) 
     { 
     case 1: 
      gold = gold - 5; 
      cout << "Now you only have " << gold << " gold.\n"; 
      cout << "blah blah"; 
      health = 100; 
      break; 
     case 2: 
      cout << "blah blah" 
        << "1 - Head Back in and Buy a Bed\n" 
        << "2 - Find a Clothier Shop\n" 
        << "3 - Find a Blacksmith's\n"; 
      cin >> subsubchoice; 
      switch(subsubchoice) 
      { 
      case 1: 
       gold = gold - 5; 
       cout << "Now you only have " << gold << " gold.\n"; 
       cout << "blah blah" 
       health = 100; 
       break; 
      case 2: 
       menuchoice = subsubchoice; 
       break; 
      case 3: 
       menuchoice = subsubchoice; 
       break; 
      } 
     } 

    break; 
    case 2: 

    } 




} while (!boolchoice); 

안녕하세요.이 코드는 여기에 있습니다. 그리고 그것을 실행할 때마다 하위 선택을 위해 항상 cin 입력을 건너 뜁니다. 그것이 무엇을 해야하는지 그 입력을 받아 여관에 가거나 메뉴 선택에 그 선택을 적용하게하고 do-while 루프의 처음에 다시 시작하는 것입니다. 왜 입력을 건너 뛰고 프로그램을 닫는 지 알 수 없습니다. 어떤 도움을 주셔서 감사합니다.do/while 루프에서 Cin 입력을 건너 뜁니다.

답변

1

아마 당신은 당신이 당신의 입력의 형식을 설명 할 수 cin >> subsubchoice;

0

전에 cin.ignore()를 추가 할 필요가? cin은 공백 문자 ('\ n', '\ t', ''등)가 발견 될 때까지 모든 입력을 읽습니다. "2 1"과 같이 원래 입력에 공백을 삽입 할 가능성이 있습니까? 여기

+0

시도 입력을 입력하고 있습니다. 해당 버튼을 누른 다음 Enter 키를 눌러 [1] [ENTER]를 누른 다음 일부 텍스트가 초 단위로 표시됩니다. 첫 번째 경우에는 텍스트를 말하면서 만들 수 있지만 그 다음에 닫는다. 방금 cin.ignore() 시도; 그리고 그것은 차이를 만들지 못했습니다. – Alex

+0

변수 하위 분류의 유형은 무엇입니까? – someone

+0

지금은 짧은 int이지만 int를 시도했지만 변경되지 않았습니다 – Alex

0

당신은 다음과 같습니다

  1. 누락 된 cout을에서 세미콜론 < < "당신은 신속하게 잘 따뜻한 여관에 다시 머리와 따뜻한 밤에 편안한 휴식과 잠이 당신의 건강이 복원됩니다. 100. \ n ";

  2. 마지막 사례 2를 제거하거나 휴식을 추가하십시오. 그 후에 (더 나은 제거, 그것은 쓸모가 없다).

  3. while (! boolchoice)는 false가 보장됩니다. forst if를 입력하려면 boolchoice가 0이 아니어야합니다. 당신이 그것을 반복 할 경우 ... 당신도 금이나 건강 밖으로 때 종료하는 동안 (금) 또는 동안 (건강)를 사용하여 난이 도움이되기를 바랍니다

...

관련 문제