VB.net Não é possível obter uma saída para aparecer na minha caixa de listagem. iniciantes Pergunta
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
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)
???