0

単語に同じ文字が複数含まれているかどうかをチェックするコードを書いているので、各文字を配列に分割してこのコードを書きました。「correctGuesses」変数は、重複する文字の数であると想定されています。配列には文字列 ("H、E、L、L、O") が含まれます。

Dim newCharArray() As Char = wordArray(rndNumber).ToCharArray
ReDim Preserve charToString_2(newCharArray.Length - 1)
Dim cBoolean As Boolean = False

For i As Integer = 0 To (newCharArray.Length - 1) Step 1

    charToString_2(i) = newCharArray(i)
    MsgBox(charToString_2(i))

Next



For j As Integer = 0 To (charToString_2.Length - 1) Step 1
    For b As Integer = 0 To (charToString_2.Length - 1) Step 1

        MsgBox("Is " & charToString_2(j) & " = " & charToString_2(b) & "?")

        If j = b Then

            MsgBox(j & " is equal to " & b & ", continuing.")
            Exit For

        End If
        If CStr(charToString_2(b)) = CStr(charToString_2(b)) Then

            MsgBox("Yes, +1")
            correctGuesses += 1
            charToString_2(b) = "Replaced"
            cBoolean = True

        End If

        MsgBox("No, Continuing.")

    Next                    
Next

最初の if ステートメントは機能するため、j = b になると終了して続行します。しかし、次のループでは、"E" が "H" と等しいかどうかをチェックし、true を返します! 理由がわかりません!

4

2 に答える 2

0

あなたのアルゴリズムはほとんどそこにあります。少し微調整できます。

Dim stringtoCheck As String = wordArray(rndNumber)

For j As Integer = 0 To (stringtoCheck.Length - 2)
    For b As Integer = j+1 To (stringtoCheck.Length - 1)

        If stringtoCheck.chars(b) = stringtoCheck.chars(j) Then

            correctGuesses += 1
            cBoolean = True

        End If

    Next                    
Next
于 2013-10-17T17:48:55.550 に答える