while循环中的if / 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”去名2,然后到位置。
解决方案
您必须附上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);
}
不隶属于 StackOverflow