繁体   English   中英

从最大到最小的排列顺序问题

[英]Issues With Ordering Array from Greatest To Least

在下面,您将看到制作随机数组的条件。 我需要按从大到小的顺序对项目进行排序,然后根据用户选择的类别将其放入文本框。 这是用于DnD 4e能力生成器的。 我需要能够将最高的技能得分放入该班级的最合适领域。

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    'Dim randstr As New Random

    'Dim a As Integer
    'Dim b As Integer
    'Dim c As Integer
    'Dim d As Integer
    'Dim h As Integer
    'Dim f As Integer


    'a = randstr.Next(3, 18)
    'b = randstr.Next(3, 18)
    'c = randstr.Next(3, 18)
    'd = randstr.Next(3, 18)
    'h = randstr.Next(3, 18)
    'f = randstr.Next(3, 18)

    Static randomNumberGenerator As New System.Random


    Dim randomNumbers(6) As Integer ' Create the array

    Dim smallestNumber As Integer = 3 ' Set the lower bounds

    Dim largestNumber As Integer = 18 ' Set the upper bounds



    For i = 0 To 6 ' loop through each element in the array

        randomNumbers(i) = randomNumberGenerator.Next(smallestNumber, largestNumber)

    Next

    If CbClass.SelectedItem = "Fighter" Then

    End If
End Sub

这会将您的数组从大到小排序-在此代码之后。

For i = 0 To 6 ' loop through each element in the array

    randomNumbers(i) = randomNumberGenerator.Next(smallestNumber, largestNumber)

Next

Array.Sort(randomNumbers)
Array.Reverse(randomNumbers)

将它们添加到文本框

TextBox1.Text = randomNumbers(0).ToString
TextBox2.Text = randomNumbers(1).ToString
TextBox3.Text = randomNumbers(2).ToString
TextBox4.Text = randomNumbers(3).ToString
TextBox5.Text = randomNumbers(4).ToString
TextBox6.Text = randomNumbers(5).ToString

当然要记住将上述文本框的名称更改为您所需要的名称。

要设置角色的统计信息,您可能需要这样的内容

If CbClass.SelectedItem = "Fighter" Then
    Strength = randomNumbers(0)
    Aglity = randomNumbers(1)
    Health = randomNumbers(2)
    Intellect = randomNumbers(3)
End If

等等。

这将是您生成和订购号码的最简单方法:

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

    Static randomNumberGenerator As New System.Random()

    Dim smallestNumber As Integer = 3 ' Set the lower bounds
    Dim largestNumber As Integer = 18 ' Set the upper bounds
    Dim randomNumbers() As Integer = _
        Enumerable _
            .Range(0, 6) _
            .Select(Function (x) randomNumberGenerator.Next(smallestNumber, largestNumber + 1)) _
            .OrderByDescending(Function (x) x) _
            .ToArray()

    ' Rest of your code here

End Sub

千万记住,调用randomNumberGenerator.Next(smallestNumber, largestNumber + 1)+ 1是重要的,因为这个调用的第二个参数是一个独特的上限。

运行此代码时, randomNumbers数组将包含以下内容:

randomNumbers

然后,您可以只分配Dim x = randomNumbers(0)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM