Если / else формат внутри пока цикла
-
25-09-2019 - |
Вопрос
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» перейдите к name2, а затем на местоположение.
Решение
Вы должны приложить заявления между if
и то else
в скобках {
... }
.
Другие советы
Вам нужно добавить брекеты здесь:
if (additional == "Y")
cout << "Additional Name: ";
getline(cin, Name2);
else
cout << "Location: ";
getline(cin, Location);
Пытаться:
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);
Я подозреваю, что вы всегда хотите, чтобы вы могли произойти следующие строки (получение местоположения), поэтому в этом случае ничем не требуется.
Вам нужно приложить тело if
в брекетах, чтобы избавиться от ошибки. По внешнему виду вам также нужно приложить else
Тело в брекетах:
if (additional == "Y") {
cout << "Additional Name: ";
getline(cin, Name2);
} else {
cout << "Location: ";
getline(cin, Location);
}
Вы можете отбрасывать только брекеты ({
а также }
) вокруг блоков, когда блок содержит ровно одно утверждение (что-то заканчивая точкой с запятой (;
)) или другое утверждение с блоком (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);
}