「SelectName()」サブにないコードの一部に問題がある場合に備えて、ここにすべてのコードをスローします。
Module Module1
Dim selectednames As String = ""
Dim index As Short = 0
Dim inarray As Boolean = False
Dim amountofkeys As Short
Dim namesarray() As String
Dim names As String = ""
Dim input As String = ""
Dim totalnames As Short = 0
Dim indexofcomma As Short = 0
Sub Main()
Console.Write("Howmany keys are there to be given away? ")
amountOfKeys = CShort(Console.ReadLine())
Start()
While Not amountofkeys = -1
SelectName(names, totalnames)
amountofkeys = amountofkeys - 1
End While
Console.Write("The winners are: " & selectednames)
Console.ReadLine()
End Sub
Sub SelectName(ByVal names As String, ByVal totalnames As Short)
ReDim namesarray(totalnames - 1)
If inarray = False Then
For x = 0 To totalnames - 1
indexofcomma = InStr(names, ",")
namesarray(x) = Left(names, indexofcomma - 1)
names = Mid(names, indexofcomma + 1, (Len(names)))
Next
inarray = True
End If
Randomize()
index = Int(Rnd() * (totalnames - 1))
For x = 0 To totalnames - 1
Debug.Print("namesarray(" & x & ") = " & namesarray(x))
Next
selectednames &= namesarray(index) & " "
movenames()
End Sub
Sub movenames()
For x = index To totalnames - 1
namesarray(index) = namesarray(index + 1)
Next
totalnames -= 1
End Sub
Sub Start()
Console.WriteLine("Enter all the viewer's names, one by one.")
Console.WriteLine("Once all names have been entered, press 0.")
input = Console.ReadLine()
While Not input = "0"
names &= input & ","
totalnames += 1
input = Console.ReadLine()
End While
End Sub
End Module
これがそれが何をするかの画像です(私はあなたが何がうまくいかなかったかを見ることができると思います)
13の入力、3つの出力が期待され、1つの出力のみが与えられます。
何が悪いのかを見つけるのを手伝ってくれる人がいる可能性はありますか?
これまでのところ、正しい量のループなどを実行しています。2番目のゲームキーの「勝者」の生成を開始するとすぐに、namesarrayから文字列値を取得しません。
また、なぜですか
For x = 0 To totalnames - 1
Debug.Print("namesarray(" & x & ") = " & namesarray(x))
Next
デバッグ出力が表示されませんか?