Vb.net Visual Basic-将数组循环100次不起作用?
我尝试将此数组循环100次(获取0-99999之间的数字)。我试过几种不同的方法,但都没有成功。我已经设置好了,所以你点击一个按钮,它就会生成数组。然后,用户将输入一个数字并点击另一个按钮,以检查该数字在100个数字组中显示的次数。你有没有想过如何修复它?我卡住了Vb.net Visual Basic-将数组循环100次不起作用?,vb.net,Vb.net,我尝试将此数组循环100次(获取0-99999之间的数字)。我试过几种不同的方法,但都没有成功。我已经设置好了,所以你点击一个按钮,它就会生成数组。然后,用户将输入一个数字并点击另一个按钮,以检查该数字在100个数字组中显示的次数。你有没有想过如何修复它?我卡住了 Dim i As Integer Dim rnd As New Random() Private Sub Button1_Click(ByVal sender As System.Object, ByVal e
Dim i As Integer
Dim rnd As New Random()
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnter.Click
Dim num As Integer
If Int32.TryParse(txtEnter.Text, num) AndAlso num >= 0 AndAlso num < 10 Then
lblNumber.Text = i.ToString()
Dim counts = From c In i.ToString()
Group By c Into Group
Select DigitGroup = New With {.Count = Group.Count(), .Digit = c, .Group = Group}
Order By DigitGroup.Count Descending, DigitGroup.Digit
Dim numCount = counts.FirstOrDefault(Function(grp) grp.Digit.ToString() = num.ToString())
If numCount IsNot Nothing Then
Dim numMessage = String.Format("There are {0} number {1}'s found.", numCount.Count, num)
MessageBox.Show(numMessage)
Else
MessageBox.Show("Your number does not contain a " & num)
End If
Else
MessageBox.Show("Please enter a number between 0 and 9.")
End If
End Sub
Private Sub btnGetNumber_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGetNumber.Click
btnEnter.Enabled = True
i = 0
Do Until i > 100
Dim randomInt = rnd.Next(0, 100000)
i = i + 1
i = rnd.Next(0, 100000)
Loop
End Sub
End Class
Dim i作为整数
Dim rnd作为新的随机变量()
私有子按钮1\u单击(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理Btenter。单击
Dim num作为整数
如果Int32.TryParse(txtener.Text,num)和also num>=0和also num<10,则
lblNumber.Text=i.ToString()
尺寸计数=从i.ToString()中的c开始
按c分组
使用{.Count=Group.Count(),.Digit=c,.Group=Group}选择DigitGroup=New
按数字组排序。计数递减,数字组。数字
Dim numCount=counts.FirstOrDefault(函数(grp)grp.Digit.ToString()=num.ToString())
如果numCount不是什么,那么
Dim numMessage=String.Format(“找到了{0}个{1}.”,numCount.Count,num)
MessageBox.Show(numMessage)
其他的
MessageBox.Show(“您的号码不包含”&num)
如果结束
其他的
MessageBox.Show(“请输入一个介于0和9之间的数字”)
如果结束
端接头
私有子btnGetNumber\u Click(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理btnGetNumber。Click
btenter.Enabled=True
i=0
直到我超过100
Dim randomInt=rnd.Next(0,100000)
i=i+1
i=下一个rnd(0,100000)
环
端接头
末级
将新随机数()
移出该循环。将其设置为全局并只创建一次实例
(随机生成器开始使用从当前时间获得的种子。在循环中声明随机变量会导致重复使用相同的种子。这会返回相同的数字,从而破坏函数的随机性)如下所示:
请看另一种解释
当然,如果不增加用于控制循环的变量i
,将永远循环
Dim i As Integer
Dim rnd As New Random()
.....
i = 0
Do Until i > 100
Dim randomInt = rnd.Next(0, 100000)
i = i + 1
Loop
我说,现在我搞不懂你想在这里干什么。没有要检查的数组,也不使用从随机生成器获得的值,简单地说,i
变量以值101退出。现在我只是猜测你的意图,但也许你就是想要这个
i = rnd.Next(0, 100000)
这将给变量
i
一个随机数,随后的代码将检查i
中所需数字的数量。我发现您没有将变量“i”添加到增量中:
i = 1
Do Until i > 100
Dim rnd As New Random()
Dim randomInt = rnd.Next(0, 100000)
i+=1 'Increment value of i by 1, same as i = i + 1
Loop
如果不递增,“i”的变量将始终为1。检查并让我知道这是否解决了问题 首先,当您知道循环的数量时,通常使用For循环 其次,您忘记了在until循环中增加i 最后,您不需要在每个循环中重新声明rnd。我觉得这样比较好:
Dim rnd As New Random()
For i = 1 To 100
Dim randomInt = rnd.Next( 0 , 100000 )
Next
我编辑了我的代码。。它可以工作,但只测试从0-99999随机生成的1个数字。我仍然需要这个程序来测试99个其他的“数字”。还有,我应该用数组来做这个,我想是的,但我想我真的不知道数组是什么?如何使用数组?谢谢你的帮助!因此,您希望生成100个随机数,然后在每个数中检查该数字数组中有多少位数字(从0到9)?示例(23498988687=>有3位数字'8')i++//i的增量值为1,与i=i+1//相同,该行给了我大量错误,其中的一部分应该是注释吗?我很困惑是的,在那一行中“/”表示一条评论。。。在C#中。很抱歉给您带来不便,这只是code.VB.NET中的“i++”不支持
++
运算符,因此您必须编写i++=1
而不是i++
@MarcinJuraszek谢谢您的澄清!我不经常使用VB.NET。