VB.net Não é possível obter uma saída para aparecer na minha caixa de listagem. iniciantes Pergunta

StackOverflow https://stackoverflow.com/questions/633056

  •  08-07-2019
  •  | 
  •  

Pergunta

Tentando chegar ao usuário colocar 3 números em 3 caixas de texto e obter a média.

Private Sub btnAverage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAverage.Click

  Dim a As Integer = CInt(txtone.Text)        
  Dim b As Integer = CInt(txtTwo.Text)
  Dim c As Integer = CInt(txtThree.Text)
  Dim average As Integer   
  average = (a + b + c) / 3

  lstOutput.Text = average

End Sub 
Foi útil?

Solução

Tente alterar o tipo de média de Integer para Double

Dim average as Double

Agora você está tentando armazenar a média em um Integer que só pode armazenar um número inteiro. Médias tendem a ser números não-inteiros e precisa de um tipo de dados que pode representar isso. Duplo é bom para a maioria das situações. Isso deve resolver o seu problema.

Editar OP mencionou que lstOutput é uma caixa de listagem

Este é um dos confundindo as coisas com WinForms. Mesmo que cada controle tem uma propriedade de texto, nem todos eles realmente fazer alguma coisa. Eles só se aplicam a elementos que mostrar diretamente um bloco de texto simples ou de valor. Ex Botão, Etiqueta, etc ...

A caixa de listagem, por outro lado mostra um grupo de itens. Você deseja adicionar um novo item à lista.

lstOutput.Items.Add(average.ToString())

Outras dicas

A propriedade Texto de uma caixa lista irá obter ou definir o item selecionado . Você não adicionou a sua média para a caixa de listagem ainda.

Tente:

lstOutput.Items.Add(average)

Você tem certeza que txtOne.text txtTwo.text e txtThree.txt será sempre um valor inteiro?

Pode ser necessário mudar também a a, b, c vars para Duplas e verifique se o usuário não fornecer valores não numéricos.

Se as puts usuário "um" na caixa de texto txtOne, você terá uma kablowee exceção.

(ar de codificação aqui)

   dim a as new double
   try
       if isnumeric(txtOne.text.tostring.trim) then
          a = cdbl(txtOne.text.tostring.trim)
       end if

    'repeat for b and c ...

    catch ex as exception
       messagebox.show(ex.message.tostring)
    end try

E, eu não tenho certeza se estou certo sobre isso, (talvez alguém vai me ilumine) mas não .NET considerar a conversão de tipo de string para int de forma diferente nesses dois casos

a  = cint(txtOne.text)

e

a = cint(txtOne.text.tostring)

???

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top