2010-10-22 9 views
0
while(true) 
{ 
    cout << "Name: "; 
    getline(cin, Name); 
    if(Name == "Stop") 
    break; 

    cout << "Additional Name - Y/N: "; 
    getline(cin, additional); 
    if (additional == "Y") 
    cout << "Additional Name: "; 
    getline(cin, Name2); 
    else 
    cout << "Location: "; 
    getline(cin, Location); 
    if(Location == "Stop") 
    break; 
} 


chief.cpp: In member function ‘void BookList::Fill()’: 
chief.cpp:128: error: ‘else’ without a previous ‘if’ 

После того, как пользователь вводит имя, я хотел бы дать возможность ввести второе имя. Если «N» просто перейдите к «Расположение», если «Y» перейдите в «Имя2», а затем «Место».if/else format in while loop

+0

Было бы полезно, если бы вы указали строку 128 на листинг, хотя вы все-таки полезные ответы. –

ответ

5

Вы должны приложить заявления между if и else в скобках { ... }.

4

Вы должны добавить фигурные скобки здесь:

if (additional == "Y") 
    cout << "Additional Name: "; 
     getline(cin, Name2); 
else 
    cout << "Location: "; 
    getline(cin, Location); 

Try:

if (additional == "Y") 
{ 
    cout << "Additional Name: "; 
    getline(cin, Name2); 
} 
// You could have an else here, but that would make location only happen if "additional" was not "Y" 

cout << "Location: "; 
getline(cin, Location); 

Я подозреваю, что вы всегда хотите, следующие строки (получение местоположения), чтобы иметь место, так что в этом случае нет другого необходимо.

0

В фигурных скобках необходимо приложить тело if, чтобы избавиться от этой ошибки. Судя по ним также необходимо приложить else тело в фигурных скобках:

if (additional == "Y") { 
    cout << "Additional Name: "; 
    getline(cin, Name2); 
} else { 
    cout << "Location: "; 
    getline(cin, Location); 
} 
0

Вы можете только отбросить фигурные скобки ({ и }) вокруг блоков, когда блок содержит ровно одно утверждение (что-то заканчивающуюся точкой с запятой (;)) или другое заявление с блоком (if, for, while и т. Д.).

Например, вы можете сделать это:

while (true) 
    if (foo) { 
     printf("Hello, "); 
     printf("world\n"); 
    } 

или даже

while (true) 
    if (foo) 
     for (i = 0; i < 10; i++) { 
      printf("Hello, "); 
      printf("World!\n"); 
     } 

Но в вашем коде, вы должны использовать фигурные скобки, так как ваш if заявление содержит два заявления до проведения else заявления. Поэтому оператор if заканчивается после строки cout.

Конечный результат должен таким образом выглядеть примерно так:

if (additional == "Y") { 
    cout << "Additional Name: "; 
    getline(cin, Name2); 
} 
else { 
    cout << "Location: "; 
    getline(cin, Location); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^