none
[C#]Imprimir laço de repetição em textbox RRS feed

  • Pergunta

  • Estou fazendo um exercício em Windows Form Application onde o usuário insere um valor no textbox e eu preciso imprimir em outros 2 textbox somente os valores pares entre 0 e o valor inserido e no outro os valores ímpares entre 0 e o valor inserido.

    Consegui desenvolver a lógica, porém não consigo atribuir a minha variável cont(i) ao textbox durante o laço de repetição.

    Se eu digito o valor 10, ele só imprime 8, sendo que deveria imprimir 2,4,6,8,10.

    Segue o código: 

    int valor, cont;
    
    valor = Convert.ToInt32(txtValor.Text);
    
                for (int cont = 0 ; cont < valor; cont++) {
    
                    if (cont % 2 == 0)
                    {
                        txtPar.Text = cont.ToString();
    
                      }
    
                    else{
                       txtImpar.Text = cont.ToString();
                    }


    • Editado MGalvani quinta-feira, 13 de novembro de 2014 20:34
    quinta-feira, 13 de novembro de 2014 20:33

Respostas

  • Bom dia,

    Isso está acontecendo porque você está sempre atribuindo um valor novo ao TextBox sem fazer a concatenação do valor antigo, exibindo sempre o último valor analisado. Para fazer a concatenação, verifique a correção do seu código abaixo.

    int valor;
    
    valor = Convert.ToInt32(txtValor.Text);
    
    for (int cont = 0 ; cont < valor; cont++) 
    {
         if (cont % 2 == 0)
         {
             txtPar.Text += cont.ToString() + "  ";
         }
    
         else
         {
            txtImpar.Text += cont.ToString() + "  ";
         }
    }

    Eu ajustei a linha de passagem da variável para o TextBox da seguinte maneira: coloquei o caractere "+" após a propriedade Text, para fazer a concatenação dos conteúdos e, após a variável, acrescentei um espaço para a boa visualização do próximo número.

    OBS: Você está instanciando a variável CONT em dois lugares: no início do código e no laço de repetição FOR. Experimente criar apenas dentro do FOR (deve estar exibindo algum erro de compilação no seu código por causa disso).

    Abs.


    Dicas de programação em .net, C# e SQL - http://smcode.com.br/blog.aspx

    • Marcado como Resposta MGalvani sexta-feira, 14 de novembro de 2014 17:55
    sexta-feira, 14 de novembro de 2014 09:49

Todas as Respostas

  • Bom dia,

    Isso está acontecendo porque você está sempre atribuindo um valor novo ao TextBox sem fazer a concatenação do valor antigo, exibindo sempre o último valor analisado. Para fazer a concatenação, verifique a correção do seu código abaixo.

    int valor;
    
    valor = Convert.ToInt32(txtValor.Text);
    
    for (int cont = 0 ; cont < valor; cont++) 
    {
         if (cont % 2 == 0)
         {
             txtPar.Text += cont.ToString() + "  ";
         }
    
         else
         {
            txtImpar.Text += cont.ToString() + "  ";
         }
    }

    Eu ajustei a linha de passagem da variável para o TextBox da seguinte maneira: coloquei o caractere "+" após a propriedade Text, para fazer a concatenação dos conteúdos e, após a variável, acrescentei um espaço para a boa visualização do próximo número.

    OBS: Você está instanciando a variável CONT em dois lugares: no início do código e no laço de repetição FOR. Experimente criar apenas dentro do FOR (deve estar exibindo algum erro de compilação no seu código por causa disso).

    Abs.


    Dicas de programação em .net, C# e SQL - http://smcode.com.br/blog.aspx

    • Marcado como Resposta MGalvani sexta-feira, 14 de novembro de 2014 17:55
    sexta-feira, 14 de novembro de 2014 09:49
  • Faz dessa maneira:

    valor = Convert.ToInt32(txtValor.Text);
    
                for (int cont = 0 ; cont <= valor; cont++) {
    
                    if (cont % 2 == 0)
                    {
                        txtPar.Text+= cont.ToString()+" , ";
    
                      }
    
                    else{
                       txtImpar.Text += cont.ToString()+" , ";
                    }


    sexta-feira, 14 de novembro de 2014 09:55