0

试图让用户在 3 个文本框中输入 3 个数字并获得平均值。

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 
4

3 回答 3

2

尝试将平均值类型从 Integer 更改为 Double

Dim average as Double

现在你正试图将平均值存储在一个只能容纳整数的整数中。平均值往往是非整数,需要一种可以表示它的数据类型。双倍适用于大多数情况。那应该可以解决您的问题。

EDIT OP 提到 lstOutput 是一个 ListBox

这是 WinForms 令人困惑的事情之一。尽管每个控件都有一个 Text 属性,但并不是所有控件都实际执行任何操作。它们仅适用于直接显示单个文本块或值的元素。防爆按钮、标签等...

另一方面,ListBox 显示一组项目。您想将新项目添加到列表中。

lstOutput.Items.Add(average.ToString())
于 2009-03-11T02:04:05.327 回答
1

列表框的 Text 属性将获取或设置选定项。您尚未将平均值添加到列表框中。

尝试:

lstOutput.Items.Add(average)

于 2009-03-11T02:21:54.673 回答
0

您确定 txtOne.text txtTwo.text 和 txtThree.txt 将始终是整数值吗?

您可能还需要将 a、b、c 变量更改为 Doubles 并检查用户是否提供了非数字值。

如果用户在 txtOne 文本框中输入“one”,您将得到一个异常 kablowee。

(此处为空气编码)

   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

而且,我不确定我是否正确,(也许有人会启发我)但是.NET在这两种情况下是否考虑从字符串到int的类型转换不同

a  = cint(txtOne.text)

a = cint(txtOne.text.tostring)

???

于 2009-03-11T02:11:51.937 回答