Frage

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’

Nachdem der Benutzer die Vornamen eingibt, würde Ich mag die Möglichkeit geben, einen zweiten Namen einzugeben. Wenn „N“ nur überspringen Lage nach unten, wenn „Y“ zu Name2 gehen und dann weiter nach Lage.

War es hilfreich?

Lösung

Sie haben die Anweisungen zwischen den if und dem else in Klammern umschließen { ... }.

Andere Tipps

Sie müssen Klammern hier hinzufügen:

if (additional == "Y") 
     cout << "Additional Name: ";
      getline(cin, Name2);
else
     cout << "Location: ";
     getline(cin, Location);

Versuchen Sie:

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

Ich vermute, dass Sie immer die folgenden Zeilen wollen (immer Standort) auftreten, so dass in diesem Fall ist kein anderes erforderlich ist.

Sie müssen den Körper von if in Klammern umschließen die Beseitigung der Störung zu erhalten. Durch den Blicken von ihm auch die else Körper in Klammern einschließen müssen:

if (additional == "Y") {
  cout << "Additional Name: ";
  getline(cin, Name2);
 } else {
  cout << "Location: ";
  getline(cin, Location);
 }

Sie können nur die Klammern ({ und }) verwerfen um Blöcke, wenn der Block enthält genau eine Anweisung (etwas mit einem Semikolon enden (;)) oder einer anderen Anweisung mit einem Block (if, for, while, etc).

Zum Beispiel, Sie können dies tun:

while (true)
    if (foo) {
        printf("Hello, ");
        printf("world\n");
    }

oder auch

while (true)
    if (foo)
        for (i = 0; i < 10; i++) {
            printf("Hello, ");
            printf("World!\n");
        }

Aber in Ihrem Code, müssen Sie verwenden Klammern, da Ihre if Anweisung enthält zwei Aussagen vor der else Aussage. Deshalb ist das if Anweisung Ende nach der cout Linie.

Das Endergebnis sollte so etwas wie folgt aussehen:

if (additional == "Y") {
   cout << "Additional Name: ";
   getline(cin, Name2);
}
else {
   cout << "Location: ";
   getline(cin, Location);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top