tags:

views:

369

answers:

3

Trying to get the user to put 3 numbers in 3 text boxes and get the average.

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
+2  A: 

Try changing the type of average from Integer to Double

Dim average as Double

Right now you're trying to store the Average in an Integer which can only hold a whole number. Averages tend to be non-whole numbers and need a data type that can represent that. Double is good for most situations. That should fix your problem.

EDIT OP mentioned that lstOutput is a ListBox

This is one of the confusing things with WinForms. Even though every single control has a Text property, not all of them actually do anything. They only apply to elements that directly display a single text block or value. Ex Button, Label, etc ...

A ListBox on the other hand displays a group of items. You want to add a new item to the list.

lstOutput.Items.Add(average.ToString())
JaredPar
For some reason nothing appears in the list box when I click the button.
Davey
That seems to have fixed it. Thanks for all the help. JaredPar FTW!
Davey
A: 

Are you sure that txtOne.text txtTwo.text and txtThree.txt will always be an integer value?

You might need to also change the a,b,c vars to Doubles and check that the user didn't supply non-numeric values.

If the user puts "one" in the txtOne textbox, you'll get an exception kablowee.

(air coding here)

   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

And, I'm not sure if I'm right about this, (maybe someone will enlighten me) but does .NET consider type conversion from string to int differently in these two cases

a  = cint(txtOne.text)

and

a = cint(txtOne.text.tostring)

???

42
+1  A: 

The Text property of a list box will get or set the selected item. You haven't added your average to the listbox yet.

Try:

lstOutput.Items.Add(average)

vg1890