急!!VB 的随机数问题·在线等··

来源:百度知道 编辑:UC知道 时间:2024/06/08 08:37:01
程序代码
Private Sub Command1_Click()
Dim r As Integer

If Command1.Caption = "开始游戏" Then

r = Int((100 * Rnd)) ' 生成随机数值。
Label1.Caption = r
Text1.Text = "请输入一个整数"
Command1.Caption = "确定"
Command2.Caption = "放弃"
p = r

Else

Label1.Caption = r
If Val(Text1.Text) <> r Then

If Val(Text1.Text) > r Then
Text1.Text = "请输入一个整数"
Label2.Caption = "大了,再猜!"

Else
Text1.Text = "请输入一个整数"
Label2.Caption = "小了,再猜!"
End If
Else

Label2.Caption = "对了!"

End If

End If

End Sub

如上~~当我第一次按Command1之后,Caption变成确定,同时产生随机数并赋值到r
但当我第二次按时,问题出现了,这时r的赋值成了0
求高手帮我看看,谢谢
回答得好加分

Dim r As Integer

If Command1.Caption = "开始游戏" Then

问题在这里,你第一次按Command1之后,Caption变成确定,那么按第二次的时候呢,是不执行产生随机数的,而变量r又被重新定义了,默认为0

对于这个问题,可以把r设置在声明中定义为全局或者在函数中定义为静态变量

将:Dim r As Integer 定义在程序最开始的地方,也就是全局变量,不要定义在单击事件中,因为定义在单击事件中,是过程级变量,在事件结束后变量“r”也就失效了。

没错,第一次是执行第一个if为真的语句,因为command1.caption的值为“开始游戏”,但执行完毕后它的值变成了“确定”,再按第二次的时候,它的值不是“开始游戏”,并且r的值已经重新定义,系统自动赋值为0,所以就是0。

加百度HI 聊吧