whileループ内のif /他のフォーマット
-
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’
ユーザーが最初に名前を入力した後、、私は2番目の名前を入力するオプションを与えたいと思います。 「Y」は場所に上、その後Name2はに移動した場合、「N」は単に、場所まで進んでください。
解決
あなたがカッコ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
文の前に2つのステートメントが含まれているので、中括弧を使用する必要があります。したがってif
行の後cout
文末尾ます。
最終的な結果は、このように、このようなものになります
if (additional == "Y") {
cout << "Additional Name: ";
getline(cin, Name2);
}
else {
cout << "Location: ";
getline(cin, Location);
}
所属していません StackOverflow