se/else formato dentro de um loop
-
25-09-2019 - |
Pergunta
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’
Depois que o usuário insere o primeiro nome, gostaria de dar a opção de inserir um segundo nome. Se "n" apenas pular para o local, se "y" for para o nome2 e depois para o local.
Solução
Você tem que incluir as declarações entre o if
e a else
Dentro de colchetes {
... }
.
Outras dicas
Você precisa adicionar aparelhos aqui:
if (additional == "Y")
cout << "Additional Name: ";
getline(cin, Name2);
else
cout << "Location: ";
getline(cin, Location);
Tentar:
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);
Suspeito que você sempre queira que as seguintes linhas (obtendo localização) ocorram; portanto, neste caso, mais ninguém é necessário.
Você precisa incluir o corpo de if
em aparelho para se livrar do erro. Pela aparência, você também precisa incluir o else
corpo em aparelho:
if (additional == "Y") {
cout << "Additional Name: ";
getline(cin, Name2);
} else {
cout << "Location: ";
getline(cin, Location);
}
Você só pode descartar os aparelhos ({
e }
) em torno de blocos quando o bloco contém exatamente uma declaração (algo que termina com um ponto e vírgula (;
)) ou outra declaração com um bloco (if
, for
, while
, etc).
Por exemplo, você pode fazer isso:
while (true)
if (foo) {
printf("Hello, ");
printf("world\n");
}
ou até
while (true)
if (foo)
for (i = 0; i < 10; i++) {
printf("Hello, ");
printf("World!\n");
}
Mas em seu código, você precisa usar aparelhos desde o seu if
a declaração contém duas declarações antes do else
declaração. Portanto, o if
Declaração termina após o cout
linha.
O resultado final deve, portanto, parecer algo assim:
if (additional == "Y") {
cout << "Additional Name: ";
getline(cin, Name2);
}
else {
cout << "Location: ";
getline(cin, Location);
}