1

Visual Basic の宿題プログラムがあります。並列配列に 7 人の友人の 7 つの電話番号を格納します。array.indexof を使用して、入力文字列が名前配列内にあるかどうかを確認し、完全な名前と対応する番号を返します。私はポスターからの答えを探しているのではなく、いくつかのガイダンスまたは私の側のオーバーサイトを指摘しています. 前もって感謝します。私の投稿が文字化けしていたり​​、フォーマットが間違っていたらごめんなさい、初めて投稿する Robert

  Dim intCounter As Integer
    Dim strNames() As String = {"BILLY", "JILLY", "MILLY", "PHILLY", "LARRY", "CURLY", "MOE"}
    Dim strNumbers() As String = {"313-213-1234", "248-123-3452", "123-321-1234", "987-986-3456", "567-635-7632", "524-456-6782", "918-872-3452"}
    Dim strLookFor As String
    Dim found As Boolean


    strLookFor = InputBox("Type in the person you want to call", "Phone a Friend") 'prompt from user
    strLookFor.TrimEnd()  'trim whitespace after entry
    strLookFor = strLookFor.ToUpper  'convert to upper case to match

    txtResults.Clear() 'clear text box
    found = False  'set boolean to false
    intCounter = 0  'set intCounter to 0
    Do While Not found And intCounter < strNames.Length

        Dim intIndex As Integer = Array.IndexOf(strNames, strLookFor) 'SHOULD return a value of 0 or higher if found
        If intIndex >= 0 Then  'if loop for value of 0 or higher
            found = True
        End If

        intCounter += 1 'add 1 to intCounter

    Loop


    If found Then  'display phone match up results
        txtResults.Text = ((strNames(intCounter - 1)) & " " & (strNumbers(intCounter - 1)))
    Else
        txtResults.Text = ("Match not found.")
    End If
End Sub
4

3 に答える 3

2

このタイプのものに理想的な辞書(文字列、文字列)を使用することをお勧めします。

Dim dic As New Dictionary(Of String, String)
    dic.Add("BILLY", "123-456-888")
    dic.Add("JILLY", "333-555-222")
    dic.Add("MILLY", "777-334-667")
    dic.Add("PHILLY", "122-665-333")

    Dim strLookFor As String = InputBox("Type in the person you want to call", "Phone a Friend").ToUpper

    If dic.ContainsKey(strLookFor) Then
        MessageBox.Show(dic(strLookFor))
    Else
        MessageBox.Show("Match not found.")
    End If
于 2012-11-26T06:30:06.787 に答える
1

あなたは答えは欲しくない、ヒントだけが欲しいと言うので、ここに私のものがあります:

intCounterループもorも必要ありませんfound

IndexOf一致がない場合は -1 を返し、一致した場合は配列の要素のインデックスを返します。

于 2012-11-26T04:06:06.473 に答える
-1

array.indexof の代わりに検索配列を使用して、今朝動作するようになりました。間違って投稿された場​​合は申し訳ありませんが、Visual Basic Express で実行しています。助けてくれてありがとう。私が行ったリビジョンは (将来の参考のために) strNames (intCounter).IndexOf (strLookFor) でした。

于 2012-11-26T11:38:47.270 に答える