Swich

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]

@Godoy

Não funciona, já tentei.

@Digao

Cara, funciono perfeitamente, muito obrigado! :smiley:
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. :smiley: