Usuário com melhor resposta
condição switch case

Pergunta
-
oi gente, to com uma duvida:
este é meu codigo:
int cont = 0;
for (int i = 0; i < total; i++)
{
string[] MeuTime = new string[25]{"ATLETICO MG", "ATLETICO PARANAENSE", "BAHIA"};
switch (Convert.ToString(listBox2.Items[i]))
{
case "1":
case "2":
case "3":
case "4":
MessageBox.Show("O time selecionado é: " + MeuTime[0]);
break;
case "5":
case "6":
case "7":
case "8":
MessageBox.Show("O time selecionado é: " + MeuTime[1]);
cont = cont + 1;
break;
case "9":
case "10":
case "11":
case "12":
MessageBox.Show("O time selecionado é: " + MeuTime[2]);
cont = cont + 1;
break;
}
}
ai so esta uma parte do codigo. (ele vai ate o case 100, de 4 em quatro). Queria saber como fazer a contagem de quantos cases eu estou usando na listbox (por exemplo: na minha listbox tem os numeros 2,3,7,8,11,12. quero que ele contem que tem 3 cases sendo utilizados.) Queria tambem fazer que ele nao apareca varias vezes a messagebox ( na minha listbox tem os numeros 2,3,7,8,11,12 entao ele vai aparecer 6 messagebox. Queria saber como fazer aparecer uma message box para cada grupo de cases, mesmo sendo, por exemplo, dois cases. no caso, se eu coloco 2 e 3, ele coloca duas vezes a mesma coisa, eu queria que ficasse uma so).
Obrigado.
Respostas
-
Oi Elooá, tudo bom?
Você precisa fazer a chamada do messegeBox fora do laço de repetição, aí ele vai exibir a mensagem somente uma vez. Para que você não perca os grupos de números utilizados para cada time, você pode armazenar os valores em uma variável durante as suas iterações, assim como os nomes de times escolhidos caso necessário, para depois, fora do FOR, você exibir para o usuário quais times e números estão sendo selecionados.
Espero que isso tenha ajudado.
Att,
- Sugerido como Resposta Eduardo.RomeroModerator sexta-feira, 24 de abril de 2015 18:27
- Não Sugerido como Resposta Elooá sexta-feira, 24 de abril de 2015 19:49
- Marcado como Resposta Elooá sexta-feira, 24 de abril de 2015 19:49
-
Isso mesmo você precisa ter uma lista de objetos para armazenar os nomes dos seus times, que vai ser criada antes do seu FOR, e depois que o seu FOR acaba, você consulta ela para exibir os nomes dos times em um único MessageBox, conforme o código de exemplo abaixo:
List<string> listaDeTimes = new List<string>(); int cont = 0; for ( int i = 0; i < total; i++ ) { string[] MeuTime = new string[25] { "ATLETICO MG", "ATLETICO PARANAENSE", "BAHIA" }; switch ( Convert.ToString( listBox2.Items[i] ) ) { case "1": case "2": case "3": case "4": listaDeTimes.Add( string.Format("{0}, ", MeuTime[0]) ); break; case "5": case "6": case "7": case "8": listaDeTimes.Add( string.Format("{0}, ", MeuTime[1]) ); cont = cont + 1; break; case "9": case "10": case "11": case "12": listaDeTimes.Add( string.Format("{0}, ", MeuTime[2]) ); cont = cont + 1; break; } } MessageBox.Show( "Os times selecinoados foram: " + listaDeTimes.ToString() );
Att,
- Marcado como Resposta Eduardo.RomeroModerator sexta-feira, 24 de abril de 2015 19:55
Todas as Respostas
-
Elooá,
Não entendi muito bem o que vc quer, mais com relação a mensagem, como o text da mensagem é sempre o mesmo e é tão rápido que vc acha que mostra duas repetidas mais ele mostra alterando somente o meutime[]. Com relação aos cases vc poderia colocar um incrementador e a medida que ele entre no case ele conte e depois vc mostraria esse valor.
Junior
-
nao, ele mostra duas vezes mesmo: se tenho o 1,2,3,4 na listbox, ele entra no case 1 case 2 case 3 case 4, e aparece 4 messagebox iguais dizendo: "O time selecionado é: ATLETICO MG ". aparece 4 vezes essa message box , queria que aparecesse apenas uma vez.
agora, no caso de contador, como seria a incrementação ? porque eu usei cont++, porém, como aparece a messagebox 4 vezes, ele conta tambem, e nao poderia contar.
-
-
-
-
-
No canto esquerdo do seu codigo aspx.c# dá um duplo clique, vai ficar uma bolinha vermelha.
Uma coisa que vc pode fazer é criar uma variável bool
bool teste = false;
qdo entrar no erro na mensagem vc testa
if (teste == false)
{ vc mostra a mensagem e seta a variavel teste para true} else { vc não mostra};
Junior
-
Oi Elooá, tudo bom?
Você precisa fazer a chamada do messegeBox fora do laço de repetição, aí ele vai exibir a mensagem somente uma vez. Para que você não perca os grupos de números utilizados para cada time, você pode armazenar os valores em uma variável durante as suas iterações, assim como os nomes de times escolhidos caso necessário, para depois, fora do FOR, você exibir para o usuário quais times e números estão sendo selecionados.
Espero que isso tenha ajudado.
Att,
- Sugerido como Resposta Eduardo.RomeroModerator sexta-feira, 24 de abril de 2015 18:27
- Não Sugerido como Resposta Elooá sexta-feira, 24 de abril de 2015 19:49
- Marcado como Resposta Elooá sexta-feira, 24 de abril de 2015 19:49
-
no caso, eu guardaria as variaveis em um vetor:
case "1":
case "2":
case "3":
case "4":
TimeEscolhido = MeuTime[0];
NumeroEscolhido[i] = 1, 2, 3, 4;
(fecha o laço for)
messagebox.show ("bla bla"+TimeEscolhido);
seria assim, mais ou menos ?
<br/>
-
Isso mesmo você precisa ter uma lista de objetos para armazenar os nomes dos seus times, que vai ser criada antes do seu FOR, e depois que o seu FOR acaba, você consulta ela para exibir os nomes dos times em um único MessageBox, conforme o código de exemplo abaixo:
List<string> listaDeTimes = new List<string>(); int cont = 0; for ( int i = 0; i < total; i++ ) { string[] MeuTime = new string[25] { "ATLETICO MG", "ATLETICO PARANAENSE", "BAHIA" }; switch ( Convert.ToString( listBox2.Items[i] ) ) { case "1": case "2": case "3": case "4": listaDeTimes.Add( string.Format("{0}, ", MeuTime[0]) ); break; case "5": case "6": case "7": case "8": listaDeTimes.Add( string.Format("{0}, ", MeuTime[1]) ); cont = cont + 1; break; case "9": case "10": case "11": case "12": listaDeTimes.Add( string.Format("{0}, ", MeuTime[2]) ); cont = cont + 1; break; } } MessageBox.Show( "Os times selecinoados foram: " + listaDeTimes.ToString() );
Att,
- Marcado como Resposta Eduardo.RomeroModerator sexta-feira, 24 de abril de 2015 19:55