Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net Visual Basic-将数组循环100次不起作用?_Vb.net - Fatal编程技术网

Vb.net Visual Basic-将数组循环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

我尝试将此数组循环100次(获取0-99999之间的数字)。我试过几种不同的方法,但都没有成功。我已经设置好了,所以你点击一个按钮,它就会生成数组。然后,用户将输入一个数字并点击另一个按钮,以检查该数字在100个数字组中显示的次数。你有没有想过如何修复它?我卡住了

   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。