none
vetor e textbox RRS feed

  • Pergunta

  •  Boa tarde!

    estou com erro no meu código, estou desenvolvendo um software que faz um calculo de multiplicação com valor inserido pelo usuário em uma textbox + valor gravado em uma variável, porém não sei o que meu código tem de errado, pq quando deixo de preencher algum campo do meu software, ou eu coloco zero pois nao quero saber resultado de uma fruta, ele da erro.

    private void txtFormular_Click(object sender, EventArgs e)
            {
                // declaração das variaveis

                int abacate, acerola, amora, bananananica, caquichocolate, u, p, l, c;



                // interligando campo a ser digitao com o produto (Frutas)


                abacate = Convert.ToInt32(textBox1.Text);


                    u = abacate * 84;
                    p = abacate * 20;
                    l = abacate * 20;
                    c = abacate * 6;

                acerola = Convert.ToInt32(textBox2.Text);

                    u = acerola * 90;
                    p = acerola * 9;
                    l = acerola * 10;
                    c = acerola * 8;



                amora = Convert.ToInt32(textBox3.Text);

                    u = amora * 86;
                    p = amora * 10;
                    l = amora * 10;
                    c = amora * 18;

                label1.Text = Convert.ToString(u);
                label3.Text = Convert.ToString(p);
                label5.Text = Convert.ToString(l);
                label4.Text = Convert.ToString(c);

                                                                
    quarta-feira, 31 de agosto de 2016 18:26

Respostas

  • Olá Bryan,

    Qual erro?

    Analisando superficialmente o seu código pode dar erro se deixar o textbox1, textbox2 ou textbox3  em branco. Isso porque o método "Convert.ToInt32" não consegue converter uma string vazia em um inteiro.

    Para prever isso você deve colocar uma verificação antes de fazer a conversão. Exemplo:

    if (!string.IsNullOrEmpty(textBox1.Text))
         abacate = Convert.ToInt32(textBox1.Text);

    OBS: Fazer o mesmo para as demais conversões.

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Marcado como Resposta bryan machado quarta-feira, 31 de agosto de 2016 20:35
    quarta-feira, 31 de agosto de 2016 18:44
  • Fez o procedimento que sugeri?

    Tenta debugar o código, colocar um break point no início do código e aí fica mais fácil ver linha a linha o que está ocorrendo


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Marcado como Resposta bryan machado quarta-feira, 31 de agosto de 2016 20:35
    quarta-feira, 31 de agosto de 2016 19:41
  • int abacate, acerola, amora, bananananica, caquichocolate, u, p, l, c;



                  if (!string.IsNullOrEmpty(textBox1.Text))
                   abacate = Convert.ToInt32(textBox1.Text);


                    u = abacate * 84; 
                    p = abacate * 20;
                    l = abacate * 20;
                    c = abacate * 6;




                if (!string.IsNullOrEmpty(textBox2.Text))
                 acerola = Convert.ToInt32(textBox2.Text);

                    u = acerola * 90;
                    p = acerola * 9;
                    l = acerola * 10;
                    c = acerola * 8;

    cada fruta ficou com erro sublinhado em vermelho na primiera coluna eu marquei pra vc ter uma noção eu tirei print mas aqui nao manda a imagem

                   
    • Marcado como Resposta bryan machado quarta-feira, 31 de agosto de 2016 20:34
    quarta-feira, 31 de agosto de 2016 19:47
  • Sim, era esperado..substitua sua linha que declara as variaveis por essa:

    int abacate = 0, acerola = 0, amora = 0, bananananica = 0, caquichocolate = 0, u, p, l, c;

    Isso faz com que as frutas tem um valor inicial de 0, independente do cálculo


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Marcado como Resposta bryan machado quarta-feira, 31 de agosto de 2016 20:28
    quarta-feira, 31 de agosto de 2016 20:04
  • Você pode alterar um pouco aquela verificação que sugeri, dessa forma:

    if (!string.IsNullOrEmpty(textBox1.Text))
         abacate = Convert.ToInt32(textBox1.Text);
    else
         abacate = 0;

    E fazer nos outros da mesma forma.


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Marcado como Resposta bryan machado quarta-feira, 31 de agosto de 2016 20:55
    quarta-feira, 31 de agosto de 2016 20:52

Todas as Respostas

  • Olá Bryan,

    Qual erro?

    Analisando superficialmente o seu código pode dar erro se deixar o textbox1, textbox2 ou textbox3  em branco. Isso porque o método "Convert.ToInt32" não consegue converter uma string vazia em um inteiro.

    Para prever isso você deve colocar uma verificação antes de fazer a conversão. Exemplo:

    if (!string.IsNullOrEmpty(textBox1.Text))
         abacate = Convert.ToInt32(textBox1.Text);

    OBS: Fazer o mesmo para as demais conversões.

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Marcado como Resposta bryan machado quarta-feira, 31 de agosto de 2016 20:35
    quarta-feira, 31 de agosto de 2016 18:44
  • O erro é o seguinte:

    frente do programa no visual studio:

    abacate [........] textebox1

    acerola [........] textebox2

    amora [......] textbox3                                                         [formular]

    laranja [.........] textbox4

    tangerina [..........] textbox 5

    se eu colocar qualquer valor nas 5 textbox de cada item e clicar no botão calcular ele faz o calculo certinho, porem o usuario pode escolher quantas ele quiser, dai eu coloco valor nas tres primeira, e as duas ultimas como nao quero colo "0" dai quando clico em formula, nao acontece nada, eu fico clicando e nao faz nada.

    

    quarta-feira, 31 de agosto de 2016 19:37
  • Fez o procedimento que sugeri?

    Tenta debugar o código, colocar um break point no início do código e aí fica mais fácil ver linha a linha o que está ocorrendo


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Marcado como Resposta bryan machado quarta-feira, 31 de agosto de 2016 20:35
    quarta-feira, 31 de agosto de 2016 19:41
  • ok vou fazer
    quarta-feira, 31 de agosto de 2016 19:42
  • int abacate, acerola, amora, bananananica, caquichocolate, u, p, l, c;



                  if (!string.IsNullOrEmpty(textBox1.Text))
                   abacate = Convert.ToInt32(textBox1.Text);


                    u = abacate * 84; 
                    p = abacate * 20;
                    l = abacate * 20;
                    c = abacate * 6;




                if (!string.IsNullOrEmpty(textBox2.Text))
                 acerola = Convert.ToInt32(textBox2.Text);

                    u = acerola * 90;
                    p = acerola * 9;
                    l = acerola * 10;
                    c = acerola * 8;

    cada fruta ficou com erro sublinhado em vermelho na primiera coluna eu marquei pra vc ter uma noção eu tirei print mas aqui nao manda a imagem

                   
    • Marcado como Resposta bryan machado quarta-feira, 31 de agosto de 2016 20:34
    quarta-feira, 31 de agosto de 2016 19:47
  • Sim, era esperado..substitua sua linha que declara as variaveis por essa:

    int abacate = 0, acerola = 0, amora = 0, bananananica = 0, caquichocolate = 0, u, p, l, c;

    Isso faz com que as frutas tem um valor inicial de 0, independente do cálculo


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Marcado como Resposta bryan machado quarta-feira, 31 de agosto de 2016 20:28
    quarta-feira, 31 de agosto de 2016 20:04
  • André Dessa vez deu certo, porem não tem uma forma deu marca todos os textbox com 0, para que  o usuário nao tenha que ficar colocando zero em todos os campos que ele nao for querer calcular, e se eu nao coloco 0, apenas pulo a textbox e clico em formula ele da esse erro:

     [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1()); - (aqui sublinhado em amarelo)
            }
        }
    }

    quarta-feira, 31 de agosto de 2016 20:31
  • Você pode alterar um pouco aquela verificação que sugeri, dessa forma:

    if (!string.IsNullOrEmpty(textBox1.Text))
         abacate = Convert.ToInt32(textBox1.Text);
    else
         abacate = 0;

    E fazer nos outros da mesma forma.


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Marcado como Resposta bryan machado quarta-feira, 31 de agosto de 2016 20:55
    quarta-feira, 31 de agosto de 2016 20:52
  • Obrigado cara de verdade, principalmente pela paciência!
    quarta-feira, 31 de agosto de 2016 20:56