为什么这段代码不起作用? 它返回一个意外的值,实际上总计= 0。
total = Cscore(TextBox1.Text) * CDbl(TextBox2.Text)
尝试此时
total = TextBox1.Text * TextBox2.Text
它返回预期值,但我需要将textbox1.text传递给函数以获得所需的值
功能就是这个
Public Function Cscore(ByVal score As Integer) As Double
Select Case score
Case score = 100
Return 5.0
Case score >= 95
Return 5.0
Case score >= 90
Return 4.75
Case score >= 85
Return 4.5
Case score >= 80
Return 4.0
Case score >= 75
Return 3.5
Case score >= 70
Return 3.0
Case score >= 65
Return 2.5
Case score >= 60
Return 2.0
Case score < 60
Return 1.0
End Select
End Function
提前致谢
答案 0 :(得分:4)
使用Option Strict On可以帮助您快速找到问题。 Case语句的语法错误,这些表达式求值为Boolean。得分很少等于真或假,如果得分等于0或1,你只得到一个值。你需要这样写:
Select Case score
Case Is = 100
Return 5.0
Case Is >= 95
Return 5.0
Case Is >= 90
Return 4.75
'' etc...
End Select
在学习VB.NET编程时使用Option Strict On。当你成为一名大师时,你可以再次关闭它。
答案 1 :(得分:2)
对于初学者,如果该值大于100,则此函数没有返回值(它将返回类型的默认值 - 在此实例中为0)。
在调用期望整数的函数之前,您还应该使用Integer.TryParse
来验证所有输入是否为整数。
最后,我建议在任何case else
语句的末尾始终使用select
。
答案 2 :(得分:0)
使用Val()函数将String转换为整数。
http://msdn.microsoft.com/en-us/library/k7beh1x9(VS.80).aspx
答案 3 :(得分:0)
如果您按照
的方式尝试一下,该怎么办?Dim tb1 as Integer = Integer.Parse(TextBox1.Text)
Dim tb2 as Integer = Integer.Parse(TextBox2.Text)
total = Cscore(tb1) * tb2