2

P1 から P6 および Z1 から Z6 という名前のギザギザ配列の 2 つのセットがあり、その内容は P 配列の果物と Z 配列の車です。これらの配列のいずれかから値を取得する関数もあります。

Public Function retL(ByVal L As Array)
    Dim maxL As Integer = L.GetUpperBound(0)
    Dim numL As Integer = randomizer(maxL)
    Dim resL As String = L.GetValue(numL - 1)
    Return resL
End Function

上記の L は、次のコードによって構成されます。

 Dim L As String = "P" & randomizer(6)
       or
 Dim L As String = "Z" & randomizer(6)

したがって、私の問題は、これが機能していないことです。L は文字列として構築されますが、retL によって配列として呼び出されるため、失敗します。最初に L を配列として構築しようとすると、失敗します。文字列として呼び出そうとすると、失敗します。ここから先はどこに行けばいいのか迷ってしまいます。明らかに、私がやろうとしていることは可能ですが、明らかに重要なステップを逃したか、基本的な概念を理解していません。

助言がありますか?

4

2 に答える 2

1

ここで本当に必要なのは、配列の配列です。それ以外の:

Dim P1(n) As String
Dim P2(n) As String
'... 
Dim P6(n) As String
'...
Dim Z6(n) As String

...ここで、「n」は配列のサイズです。次のようなものが必要です。

Dim P(5, n) As String
Dim Z(5, n) As String

VB.Netでは、配列は1つのインデックスではなくゼロのインデックスであり、添え字はアイテムの数ではなく最後のアイテムのインデックスであるため、6ではなく5を使用したことに注意してください。したがってDim P(5, n) As String、最初の次元に6つの項目がある2次元の文字列配列が得られます。

これで、関数は次のようになります。

Public Function retL(ByVal L() As String) As String
    Return L(randomizer(L.Length)-1)
End Function

そして、次のように現在のコードから関数を呼び出すことができます。

Dim result As String = retL(P(randomizer(6) - 1)
于 2012-10-18T17:58:07.187 に答える
0

これは、いくつかのことを行う小さなテストクラスです

Class TestRandomArrays
    Private L As String()
    Private randomizer As New Random()

    Public Sub InitializeArrayWithRandomLength()
        ' Creates an array of length between 0 and 5
        L = New String(randomizer.[Next](6) - 1) {}
    End Sub

    Public Sub FillArrayWithRandomText()
        For i As Integer = 0 To L.Length - 1
            L(i) = "P" & randomizer.[Next]()
        Next
    End Sub

    Public Function ReturnRandomArrayItem() As String
        Return L(randomizer.[Next](L.Length))
    End Function
End Class

array(index)配列項目は、構文を使用してインデックスによってアクセスされます。

Nextメソッドを括弧で囲んでいるのは、これNextが VB のキーワードであるためです。Nextこれらは、キーワードではなく識別子であることをVB コンパイラに伝えます。

Random.Next(max)0から の間の整数を返しますmax-1

New String(n) {}のインデックス範囲を持つ配列を定義する0..nため、長さの配列が定義されn+1ます。

これはジャグ配列ではありません。ジャグ配列は配列の配列です。つまり、結果の変数は (少なくとも) 2 つの次元を持ちます。

于 2012-10-18T18:17:55.683 に答える