none
problema com ForEach RRS feed

  • Pergunta

  • Boa noite sou iniciante em C#, devido a isso tenho várias dúvidas, simples, mas que confundem um iniciante. Meu professor pediu que fizéssemos uma "calculadora de médias escolares", coloquei um textBox e um ListBox, o inteiro que eu digito no textbox é adicionado ao listbox, depois tenho que somar e fazer a media do resultado, estou usando um  foreach:

    foreach (int valor in this.ListBox1.Items)

            {

                soma += valor;

            }

    por enquanto só estou somando os valores do listbox, ou pelo menos tentando, porque quando testo essa função aparece esse erro;

    Conversão especificada não é válida.

    e mostra que o erro está na linha do foreach.

    Alguém pode me ajudar?

    quarta-feira, 16 de março de 2011 00:15

Respostas

  • Pesquise um pouco sobre LINQ, Vc verá que esse tipo de rotina fica bem mais fácil de fazer.

    Veja:

    double

     

     

    soma = (from double item in listBox1.Items select item).Sum();

    A linha acima, faz a mesma coisa que o seu foreach, porem, em apenas uma linha!!

    Quanto ao erro no seu foreach, o ListBox.Itens, é uma coleção de objetos, sendo assim, VC pode converte-lo para int sem problemas. Porém, esse erro que está dando é de conversão de valor, provavelmente, no seu ListBox.Items há algum valor que não dá para converte-lo para int, veja se não tem nenhum valor com casas decimais, ou texto, etc...

    Falow, espero ter ajudado!

    quarta-feira, 16 de março de 2011 12:16
  • A variável valor é int,inteiro.

    ListBox é array de string.

    Esse é o erro,tipos de dado incompatíveis.

    Converta para int32 e percorra num loop FOR.

     

    Quanto ao projeto,por que você não põe 4 textBoxes,soma os 4 valores e divide por 4?

    ou não é permitido isso?

    quarta-feira, 16 de março de 2011 01:13
  • Pode fazer assim também.

    foreach (string valor in this.ListBox1.Items)
       soma += Parse.Int(valor);
    
    

    Abraço

    Estevam

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    quinta-feira, 17 de março de 2011 02:42

Todas as Respostas

  • A variável valor é int,inteiro.

    ListBox é array de string.

    Esse é o erro,tipos de dado incompatíveis.

    Converta para int32 e percorra num loop FOR.

     

    Quanto ao projeto,por que você não põe 4 textBoxes,soma os 4 valores e divide por 4?

    ou não é permitido isso?

    quarta-feira, 16 de março de 2011 01:13
  • Pesquise um pouco sobre LINQ, Vc verá que esse tipo de rotina fica bem mais fácil de fazer.

    Veja:

    double

     

     

    soma = (from double item in listBox1.Items select item).Sum();

    A linha acima, faz a mesma coisa que o seu foreach, porem, em apenas uma linha!!

    Quanto ao erro no seu foreach, o ListBox.Itens, é uma coleção de objetos, sendo assim, VC pode converte-lo para int sem problemas. Porém, esse erro que está dando é de conversão de valor, provavelmente, no seu ListBox.Items há algum valor que não dá para converte-lo para int, veja se não tem nenhum valor com casas decimais, ou texto, etc...

    Falow, espero ter ajudado!

    quarta-feira, 16 de março de 2011 12:16
  • Pode fazer assim também.

    foreach (string valor in this.ListBox1.Items)
       soma += Parse.Int(valor);
    
    

    Abraço

    Estevam

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    quinta-feira, 17 de março de 2011 02:42