好的,使用Visual Basic(在Visual Studio Express 2013中,如果这有所不同)。我正在尝试创建一个函数,该函数从文本文件中获取名字列表,并将每一行插入到数组中的索引中。我得到的是特定索引,而不是分配给该索引的字符串。
Private Sub btnAutofill_Click(sender As Object, e As EventArgs) Handles btnAutofill.Click
Dim ranFname As String = RandomFname(ranFname)
Dim ranLname As String = RandomLname(ranLname)
txtCustFname.Text = ranFname
txtCustLname.Text = ranLname
End Sub
Private Function RandomFname(ByRef ranFname As String) As String
Dim userPath As String = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)
Dim fname() As String
Dim rand As New Random()
fname = IO.File.ReadAllLines(userPath & "\OneDrive\Coding\Visual Studio\firstNames.txt")
ranFname = rand.Next(0, fname.Length - 1)
Return ranFname
End Function
Private Function RandomLname(ByRef ranLname As String) As String
Dim userPath As String = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)
Dim lname() As String
Dim rand As New Random()
lname = IO.File.ReadAllLines(userPath & "\OneDrive\Coding\Visual Studio\lastNames.txt")
ranLname = rand.Next(0, lname.Length - 1)
Return ranLname
End Function
现在,当我点击自动填充按钮时,而不是我的文本框:
名字:玛丽姓氏:琼斯
我明白了:
名字: 68 姓氏: 68
我也不知道为什么它每次都是相同的数字,它应该是随机的。
很明显,我走错了路。有人介意帮助我吗?
答案 0 :(得分:0)
ReadAllLines()
返回一个数组,你只需要一个来自这个数组的随机位置:
Private Function RandomFname(ByRef ranFname As String) As String
Dim userPath As String = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)
Dim fname() As String
Dim rand As New Random()
fname = IO.File.ReadAllLines(userPath & "\OneDrive\Coding\Visual Studio\firstNames.txt")
Return fname(rand.Next(0, fname.Length - 1))
End Function
我也不知道为什么它每次都是相同的数字,它应该是随机的。
如果您希望每次都使用不同的数字,请在两种方法使用时实例化一个Random
,或者使用允许您提供自己种子的重载来实例化每个Random
:
Dim rand As New Random(DateTime.Now.Millisecond)