2010-10-22 6 views
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’ 

Une fois que l'utilisateur a saisi le prénom, je voudrais donner la possibilité d'entrer un deuxième nom. Si "N" il suffit de passer à l'emplacement, si "Y" va à Name2 et ensuite à Location.format if/else dans la boucle while

+0

Il serait utile si vous aviez indiqué la ligne 128 sur la liste, même si vous avez reçu des réponses utiles. –

Répondre

5

Vous devez joindre les instructions entre if et else entre parenthèses { ... }.

4

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 requis.

0

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

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

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 une autre déclaration avec un bloc (if, for, while, etc.).

Par exemple, vous pouvez le faire:

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 déclaration if contient deux déclarations avant la déclaration else. Par conséquent, l'instruction if se termine 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); 
} 
Questions connexes