尝试在VB.Net中平均10个数字,有人能告诉我为什么我的代码不工作吗?

尝试在VB.Net中平均10个数字,有人能告诉我为什么我的代码不工作吗?,vb.net,Vb.net,此代码应该收集表单中的10个数字并计算平均值。当我按下计算按钮时,没有显示任何内容。为什么? *编辑我今天刚开始编程,所以我知道的不多 公开课表格1 Public Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load End Sub Public Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextCh

此代码应该收集表单中的10个数字并计算平均值。当我按下计算按钮时,没有显示任何内容。为什么? *编辑我今天刚开始编程,所以我知道的不多

公开课表格1

Public Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

End Sub

Public Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged

End Sub

Public Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click

End Sub

Public Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim TextBox1, TextBox2, TextBox3, TextBox4, TextBox5, TextBox6, TextBox7, TextBox8, TextBox9, TextBox10 As Integer
    Dim Calc As String
    Dim textbox11 As String
    Calc = TextBox1 + TextBox2 + TextBox3 + TextBox4 + TextBox5 + TextBox6 + TextBox7 + TextBox8 + TextBox9 + TextBox10 / 10
    TextBox11 = Calc


End Sub

Public Sub TextBox11_TextChanged(sender As Object, e As EventArgs) Handles TextBox11.TextChanged
    Dim TextBox1, TextBox2, TextBox3, TextBox4, TextBox5, TextBox6, TextBox7, TextBox8, TextBox9, TextBox10 As Integer
    Dim Calc As String
    Dim textbox11 As String
    Calc = TextBox1 + TextBox2 + TextBox3 + TextBox4 + TextBox5 + TextBox6 + TextBox7 + TextBox8 + TextBox9 + TextBox10 / 10
    textbox11 = Calc

End Sub

End Class

您有两个问题:@David Tansey已经讨论了一个问题,即您试图将textbox控件添加到一起,而不是它们的值。另一个是,您只需要将最后一个值除以10

您需要将所有值放在括号中:

Calc = (TextBox1.Text + TextBox2.Text + TextBox3.Text + TextBox4.Text + TextBox5.Text + TextBox6.Text + TextBox7.Text + TextBox8.Text + TextBox9.Text + TextBox10.Text) / 10

这仍然有很多地方可能出错,例如,如果一个值不能被视为一个数字,但这是一个完全不同的对话。

您已经声明了10个与表单上文本框同名的整数。
您的代码对这些整数求和,而不是对文本框值求和。
您可以删除整数声明,并在将其转换为整数值后在文本框中使用该值

Public Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim Calc As Integer
    Calc = (Convert.ToInt32(TextBox1.Text) + _
           Convert.ToInt32(TextBox2.Text) + _
           Convert.ToInt32(TextBox3.Text) + _
           Convert.ToInt32(TextBox4.Text) + _
           Convert.ToInt32(TextBox5.Text) + _
           Convert.ToInt32(TextBox6.Text) + _
           Convert.ToInt32(TextBox7.Text) + _
           Convert.ToInt32(TextBox8.Text) + _
           Convert.ToInt32(TextBox9.Text) + _
           Convert.ToInt32(TextBox10.Text)) / 10
   TextBox11.Text = Calc.ToString
End Sub
请注意,整个总和周围有括号,结果上只有除以10的部分。
当然,这只是一个例子。此外,还存在正确验证输入字段的问题。如果键入无法转换为整数的内容,则此代码将失败


您可以使用方法检查文本框中的值是否真的是整数值来解决此问题。

为避免重复,您可以执行以下操作:

Calc = {TextBox1, TextBox2, TextBox3, TextBox4, TextBox5,
        TextBox6, TextBox7, TextBox8, TextBox9, TextBox10}.
        Select(Function(txt) Convert.ToDouble(txt.Text)).Average
现在这仍然有很多重复,所以我建议您将文本框分组到一个共同的父项下,例如面板或分组框。然后使用

pnlTextBoxes.Controls.OfType(Of TextBox)

使用此方法,您可以在designer中增加或减少文本框的数量-此代码将自动调整并始终为您提供正确的答案。

您需要为每个文本框使用
Text
属性。我将如何做到这一点?如果您有10个名为TextBoxX的文本框,则不要使用相同的名称声明10个整数。这真让人困惑。我甚至都没看到警察做了那件事@用户3438398:我的荣幸。别忘了接受其中一个答案。当你赢得足够的声誉时,你也可以对你认为有用的任何数量的答案进行投票。谢谢。@neolik有一个非常聪明的解决方案——我想史蒂夫是在用一种对编程新手更有帮助的方式来解释它。