質問

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)で終わる何か)または別のステートメントが含まれている場合、

あなただけのブロックの周りにカッコ(forwhile)を破棄してもよいです。

たとえば、あなたがこれを行うことができます:

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);
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top