VB.NET中Max()与Min()方法失效求助:返回值始终为0
问题原因分析
你的代码里的核心问题出在For Each循环的使用方式上。
在VB.NET中,当你用For Each numerito In numeros遍历数组时,numerito其实是数组中每个元素的副本,而不是对原数组元素的引用。这意味着你在循环里给numerito赋值,只是修改了这个临时副本的值,根本没有改变原数组numeros里的元素。原数组初始化后所有元素默认都是0,所以最后调用Max()和Min()自然返回0啦。
修正方案
你可以改用普通的For循环,通过索引直接操作数组元素,这样就能真正把输入的值存入数组中:
Dim numeros(9) As Integer For i As Integer = 0 To numeros.Length - 1 numeros(i) = Val(InputBox("Ingrese un numero")) Next txtResultadoMayor.Text = numeros.Max().ToString() txtResultadoMenor.Text = numeros.Min().ToString()
另外补充一点:Val()函数在处理输入时如果遇到非数字内容会返回0,你可以考虑用Integer.TryParse来做更安全的输入验证,避免无效输入导致的错误。比如:
Dim numeros(9) As Integer For i As Integer = 0 To numeros.Length - 1 Dim input As String = InputBox("Ingrese un numero") If Not Integer.TryParse(input, numeros(i)) Then ' 这里可以添加输入错误的提示,比如重新输入 i -= 1 ' 让循环重新处理当前索引 MessageBox.Show("Por favor ingrese un número válido") End If Next txtResultadoMayor.Text = numeros.Max().ToString() txtResultadoMenor.Text = numeros.Min().ToString()
内容的提问来源于stack exchange,提问作者Matias Barrios
相关产品推荐
相关产品推荐

