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’

ユーザーが名前を入力した後、2 番目の名前を入力するオプションを提供したいと思います。"N" の場合は Location までスキップし、"Y" の場合は Name2 に移動してから Location に移動します。

4

4 に答える 4

5

ifステートメントを theと the の間elseで括弧{...で囲む必要があります}

于 2010-10-22T19:24:15.780 に答える
4

ここに中括弧を追加する必要があります。

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);

次の行 (場所の取得) を常に実行する必要があると思われるため、この場合は他に何も必要ありません。

于 2010-10-22T19:24:58.660 に答える
0

ifエラーを取り除くには、本体を中かっこで囲む必要があります。else見た目では、ボディを中かっこで囲む必要もあります。

if (additional == "Y") {
  cout << "Additional Name: ";
  getline(cin, Name2);
 } else {
  cout << "Location: ";
  getline(cin, Location);
 }
于 2010-10-22T19:26:11.387 に答える
0

ブロックに 1 つのステートメント (セミコロン ( ) で終わるもの) またはブロックを含む別のステートメント ( 、、 など) が含まれている場合にのみ、ブロックを囲む中括弧 ({および) を破棄できます。};ifforwhile

たとえば、次のようにできます。

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ただし、コードでは、ステートメントの前に 2 つのステートメントが含まれているため、中かっこを使用する必要がありますelse。したがって、ifステートメントはcout行の後に終了します。

したがって、最終結果は次のようになります。

if (additional == "Y") {
   cout << "Additional Name: ";
   getline(cin, Name2);
}
else {
   cout << "Location: ";
   getline(cin, Location);
}
于 2010-10-22T19:26:38.343 に答える