Pregunta

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’

Después de que el usuario introduce el nombre de pila, me gustaría dar la opción de introducir un segundo nombre. Si "N" sólo pasa a la ubicación, si "Y" ir a Nombre2 y luego a la ubicación.

¿Fue útil?

Solución

Hay que incluir las declaraciones entre el if y la else entre paréntesis { ... }.

Otros consejos

Es necesario añadir los apoyos aquí:

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

Trate:

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

Sospecho que uno siempre quiere las siguientes líneas (al obtener la ubicación) que se produzca, por lo que en este caso, no se requiere otra cosa.

Se necesita para encerrar el cuerpo de if en apoyos para deshacerse del error. Por el aspecto de que también hay que encerrar el cuerpo else entre llaves:

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

Sólo puede descartar los apoyos ({ y }) en torno a los bloques cuando el bloque contiene exactamente un comunicado (algo que termina con un punto y coma (;)) u otra declaración con un bloque (if, for, while, etc).

Por ejemplo, se puede hacer esto:

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

o incluso

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

Sin embargo, en su código, necesita apoyos uso desde su estado de if contiene dos declaraciones antes de la declaración else. Por lo tanto el final if comunicado después de la línea cout.

El resultado final por lo tanto debe ser algo como esto:

if (additional == "Y") {
   cout << "Additional Name: ";
   getline(cin, Name2);
}
else {
   cout << "Location: ";
   getline(cin, Location);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top