2

最近、私は As コンピューティング クラスのプロジェクト VB に取り組み始めました。数時間の VB コーディングに苦労した後、固いレンガの壁にぶつかりました。このように見える

Private Function store(ByVal opt As Integer, ByVal inp As String, ByVal q As String) As String
        Dim na_me(20), amount(20), num1 As String
        Select Case opt
            Case 0
                na_me(num1) += inp
                amount(num1) += q
                num1 += 1
                Return "1"
            Case 1
                For Each Str As String In na_me
                    Console.WriteLine(Str)
                Next
                Return "1"
            Case 2
                num1 = 0
                Return "1"
            Case Else
                Return "0"
        End Select
    End Function

引数 1 が呼び出されるたびに、データでいっぱいの配列ではなく、空白の画面が返されます。この関数は、関数呼び出しを介して渡されたデータを保持および保存し、それを配列に保存するように設計されています。1 が opt 引数として渡されると、配列に保持されているすべてのデータが出力されます。これは初心者の質問であることは知っていますが、vb.net を使用したことがなく、学校でのみ使用しています。

コードの残りの部分は次のとおりですhttp://pastebin.com/nWxvx9pz

4

3 に答える 3

2

あるいは、このようなことをして、厳密に型指定されたコレクション/プロパティを使用することもできます。

これらを配列として取得する必要がある場合、必要なのは MyStoredValues.ToArray() だけです

Module Module1


    Private na_me As List(Of String)
    Public Property MyStoredValues() As List(Of String)
        Get
            If na_me Is Nothing Then
                na_me = New List(Of String)
            End If
            Return na_me
        End Get
        Set(ByVal value As List(Of String))
            na_me = value
        End Set
    End Property


    Private amount As List(Of String)
    Public Property MyAmount() As List(Of String)
        Get
            If amount Is Nothing Then
                amount = New List(Of String)
            End If
            Return amount
        End Get
        Set(ByVal value As List(Of String))
            amount = value
        End Set
    End Property



    Sub Main()
        store(0, "TEST TEST TEST", "10.23")
        store(0, "TEST2 TEST2 TEST2", "11.33")
        store(1, "", "")
        Console.ReadKey()
    End Sub
    Private Function store(ByVal opt As Integer, ByVal inp As String, ByVal q As String) As Boolean

        Select Case opt
            Case 0
                MyStoredValues.Add(inp)
                MyAmount.Add(q)

                Return True
            Case 1
                For Each Str As String In MyStoredValues
                    Console.WriteLine(Str)
                Next
                Return True

            Case Else
                Return False
        End Select
    End Function
End Module
于 2012-12-18T06:45:25.030 に答える
0

プログラムのコメントの上のモジュール レベルですべての変数を宣言します。削除したら、現在の場所からそれらを削除します。販売画面の上部にカタログとして販売されているアイテムの選択を表示します。

何かのようなもの...

        Do
        Console.Clear()
        Console.WriteLine("CATALOGUE" & Chr(13) & Chr(13))
        Console.WriteLine("Id     Name                   Price" & Chr(13))
        Console.WriteLine("=======================================" & Chr(13))
        For num = 0 To 11
            Console.WriteLine(Format(num, "00") & "   " & product(num) & " " & price(num) & Chr(13))
        Next
        Console.WriteLine("=======================================" & Chr(13))
        Console.WriteLine(Chr(13))

他のメンバーが指摘したように、NUM1 は文字列ではなく整数であることを忘れないでください。

STORE プロシージャで数量を表示するには、num2 という変数を追加し、次のようにコーディングします...

            Case 1
            Console.WriteLine("Your Selection" & Chr(13))
            For num2 = 0 To UBound(na_me) - 1
                Console.WriteLine(na_me(num2) & "   " & amount(num2) & Chr(13))
            Next

UBOUND(array-name-here) ステートメントを使用すると、現在の配列内の配列要素の最大数がわかり、NUM2 変数を介して AMOUNT() 配列にアクセスすることもできます。

于 2012-12-18T06:38:00.377 に答える