Question

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’

Après que l'utilisateur entre dans le premier nom, je voudrais donner la possibilité d'entrer dans un deuxième nom. Si « N » juste passez directement à l'emplacement, si « Y » aller à Nom2, puis à la ville.

Était-ce utile?

La solution

Vous devez joindre les déclarations entre le if et le else entre crochets { ... }.

Autres conseils

Vous devez ajouter des accolades ici:

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

Essayez:

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

Je soupçonne que vous voulez toujours les lignes suivantes (obtention de l'emplacement) de se produire, dans ce cas, pas d'autre est nécessaire.

Vous devez joindre le corps de if accolades pour se débarrasser de l'erreur. Par le regard de celui-ci, vous devez également joindre le corps de else accolades:

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

Vous ne pouvez jeter les accolades ({ et }) autour de blocs lorsque le bloc contient exactement une instruction (quelque chose se termine par un point-virgule (;)) ou d'une autre déclaration d'un bloc (if, for, while, etc).

Par exemple, vous pouvez faire ceci:

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

ou même

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

Mais dans votre code, vous devez utiliser des accolades depuis votre relevé de if contient deux déclarations avant la déclaration de else. Par conséquent, la fin de la déclaration if après la ligne cout.

Le résultat final devrait ressembler donc quelque chose comme ceci:

if (additional == "Y") {
   cout << "Additional Name: ";
   getline(cin, Name2);
}
else {
   cout << "Location: ";
   getline(cin, Location);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top