Tenho um menu usando switch, porém eu fiz um switch dentro de um switch, como faço para voltar para o switch principal? Vale lembrar que eles não estão em nenhum método.
Poste seu código, mostre nele o que você quer fazer.
quando voce dá um break ele sai do switch interno.
Por exemplo:
[code] char opcao2;
do {
opcao2 = menuContan();
switch (opcao2){
case ‘1’:
char opcao;
do {
opcao = menuConta();
switch (opcao){
case ‘1’:
break;
case '2':
break;
case '3':
break;
case '4':
break;
case '5':
//AQUI QUERO VOLTAR PARA O PRIMEIRO SWITCH E SAIR DE DENTRO DESTE SWITCH
break;
default:
InOut.MsgDeInformação("","opção inválida, tente novamente");
}
} while (opcao!='5');
System.exit(0);
break;
case '2':
break;
case '3':
break;
case '4':
break;
case '5':
break;
default:
InOut.MsgDeInformação("","opção inválida, tente novamente");
}
} while (opcao2!='5');
System.exit(0);
}[/code]
Entendeu? O código não está com indentação, pois fiz ele diretamente no fórum, minha dúvida está no comentário aqui fiz.
Pode deixar assim mesmo.
Isso vai fazer com que o código vá até o while, e saia, por causa da condição.
Tente assim:[code]char opcao2;
LACO1:do{
opcao2 = menuContan();
switch (opcao2) {
case ‘1’:
char opcao;
LACO2:do{
opcao = menuConta();
switch (opcao) {
case ‘1’:
break;
case '2':
break;
case '3':
break;
case '4':
break;
case '5':
continue LACO1;
break;
default:
InOut.MsgDeInformação("", "opção inválida, tente novamente");
}
} while (opcao != '5');
System.exit(0);
break;
case '2':
break;
case '3':
break;
case '4':
break;
case '5':
break;
default:
InOut.MsgDeInformação("", "opção inválida, tente novamente");
}
} while (opcao2 != '5');
System.exit(0);[/code]
Não funciona, já tentei.
Cara, funciono perfeitamente, muito obrigado!
Eu não sabia que poderia fazer esse tipo de “laço”.
[quote=Anonner]@Godoy
Não funciona, já tentei.[/quote]
Ah sim, vc não deveria deixar a opção 5 dentro do seu switch. Não deve haver break para ela.
PS = Switch dentro de Switch é no mínimo feio. Por que não divide seu código em funções?
Eu concordo, apesar da solução ter funcionado, não acredito que seja a melhor maneira, ainda mais porque parece incorreto, o seu while deveria funcionar.
Agora se quiser entender mais sobre a solução que eu sugeri, pesquise por Labeled Loops.
Eu sei que é feio. Porém estou com preguiça e um pouco de pressa, acredito também que não irei perder pontos por isto. Depois do ‘continue’ não pode haver o break, pois ele é como se fosse um break.
Valeu pela ajuda e pelas dicas. Vou dá uma pesquisada sim.