none
condição switch case RRS feed

  • 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.

    quarta-feira, 22 de abril de 2015 18:29

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
    sexta-feira, 24 de abril de 2015 18:24
  • 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,

    sexta-feira, 24 de abril de 2015 19:54

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

    quarta-feira, 22 de abril de 2015 18:55
  • 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.

    quarta-feira, 22 de abril de 2015 19:00
  • Debuga teu código para ver a questão do messagebox. Com relação ao contador, não entendi muito bem o que vc quer contar mais vc poderia fazer assim :

    int cont1 = 0;

    int cont2 = 0;

    case "1" : cont1 += 1;

    case "5" : cont2 += 1;


    Junior

    quarta-feira, 22 de abril de 2015 19:06
  • mesmo com o contador, ele ainda aparece quatro vezes a messagebox. 

    case 1:

    case 2: 

    case 3:

    case 4:

    time = "Atletico MG"

    se na listbox tiver 1,2,3,4 , ele aparece 4 vezes Atletico MG.

    eu queria que ele aparecesse apenas uma vez Atletico MG.

    quarta-feira, 22 de abril de 2015 19:43
  • Elooá vc debugou para ver a questão do messagebox ?

    Junior

    quinta-feira, 23 de abril de 2015 11:28
  • nao .. me desculpe, mas como faço isso ?
    quinta-feira, 23 de abril de 2015 14:35
  • 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

    quinta-feira, 23 de abril de 2015 14:40
  • 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
    sexta-feira, 24 de abril de 2015 18:24
  • 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/>
    

    sexta-feira, 24 de abril de 2015 19:22
  • 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,

    sexta-feira, 24 de abril de 2015 19:54