2

以下のコードは表示されませんYou Win!

問題を見つけるのを手伝ってもらえますか? どちらの配列も文字列です。

Sub checkwin()
    Dim flag As Boolean = False
    For i As Integer = 0 To win.Length - 1
        If mess(i) = win(i) Then
            flag = True
        Else
            flag = False
            Exit For
        End If
    Next
    If flag = True Then
        lbl1.Content = "You Win!!"
        Timer.Stop()
        Dim name As String = txtName.Text
        Dim data As String = "insert into puzzleTable([picName], [name], [moves], [time]) values ('mona','" & name & "','" & counter & "','" & x & "')"
        mySql.executeSqlQuery(data)
    End If
End Sub
4

2 に答える 2

0

ほとんどの場合、空白による文字列のパディングが問題です(例:mess(i) または win(i) の先頭/末尾のスペースが埋め込まれています)。配列内の文字列の内容を確認するか、' Trim(mess(i)'でフィルタリングしてください

mess(i) 内のすべての項目が win(i) に一致する場合にのみ win と定義するコードを作成している場合は、次のコードを使用してください。

コード#1

    Dim flag As Boolean = True    

    'loop will exit and return flag=FASLE if ANY item in mess(i) not match with win(i)
    For i As Integer = 0 To win.Length - 1
        If trim(mess(i)) <> trim(win(i)) Then 'trim added to filter leading/trailing spaces
            flag = False
            Exit For
        End If
    Next

win(i) を使用して、mess(i) で少なくとも 1 つの一致するアイテムを見つけるコードを作成しようとしている場合、それを 'You Win' と定義します。

「for ループ」コードを以下のように変更してみてください。

コード #2

    Dim flag As Boolean = False    

    'loop will exit and return flag=TRUE if ANY item in mess(i) matches win(i)
    'else return flag=FALSE if no match was found in all the item in mess(i)
    For i As Integer = 0 To win.Length - 1
        If trim(mess(i)) = trim(win(i)) Then 'trim added to filter leading/trailing spaces
            flag = True
            Exit For
        End If
    Next
于 2013-07-08T10:27:35.037 に答える
0

考えられる唯一の理由は、配列内のデータが整列されていないことです (十分な情報が提供されていないため、この原因はわかりません)。より簡潔な答えを得るには、それらの配列の内容を提供してください。

于 2013-07-08T15:23:20.597 に答える