尝试让用户在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
答案 0 :(得分:2)
尝试将平均类型从Integer更改为Double
Dim average as Double
现在你正试图将平均值存储在一个只能包含整数的整数中。平均值往往是非整数,需要一个可以表示的数据类型。 Double适用于大多数情况。这应该可以解决你的问题。
编辑 OP提到lstOutput是一个ListBox
这是WinForms令人困惑的事情之一。尽管每个控件都有一个Text属性,但并不是所有控件都可以执行任何操作。它们仅适用于直接显示单个文本块或值的元素。 Ex按钮,标签等...
另一方面,ListBox显示一组项目。您想要将新项目添加到列表中。
lstOutput.Items.Add(average.ToString())
答案 1 :(得分:1)
列表框的Text属性将获取或设置所选项。您还没有将平均值添加到列表框中。
尝试:
lstOutput.Items.Add(average)
答案 2 :(得分:0)
你确定txtOne.text txtTwo.text和txtThree.txt总是一个整数值吗?
您可能还需要将a,b,c变量更改为双打并检查用户是否未提供非数字值。
如果用户在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)
???