Vb.net 如何将字符串添加到数组x2中,然后将其取回?
基本上,我要做的是编写一个程序,在其中输入人的姓名和出生日期,将其存储到一个数组中(请注意,如果我必须执行两个单独的数组,请确保),然后通过在另一个文本框中输入他们的姓名并单击另一个按钮,我可以返回出生日期 我知道我必须包含Vb.net 如何将字符串添加到数组x2中,然后将其取回?,vb.net,Vb.net,基本上,我要做的是编写一个程序,在其中输入人的姓名和出生日期,将其存储到一个数组中(请注意,如果我必须执行两个单独的数组,请确保),然后通过在另一个文本框中输入他们的姓名并单击另一个按钮,我可以返回出生日期 我知道我必须包含如果循环,我知道如何声明数组 我猜我可能需要选择一个案例 代码如下: Public Class Form1 Dim Name(5) As String Dim DOB(5) As String Dim i As Integer Private Sub btnNameEnter
如果
循环,我知道如何声明数组
我猜我可能需要选择一个案例
代码如下:
Public Class Form1
Dim Name(5) As String
Dim DOB(5) As String
Dim i As Integer
Private Sub btnNameEnter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNameEnter.Click
Name(i) = txtInputName.Text
DOB(i) = txtInputDOB.Text
If i = 6 Then
MsgBox("You cannot enter any more names.")
End If
For i = 1 To 5
Name(i) = i
txtInputName.Clear()
txtInputDOB.Clear()
Next i
End Sub
Private Sub btnFindDOB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFindDOB.Click
Select Case Name(i)
Case Is Name(1)
MsgBox("Date of birth: " & DOB(1))
Case is Name(2)
MsgBox("Date of birth: " & DOB(2))
Case is Name(3)
MsgBox("Date of birth: " & DOB(3))
Case is Name(4)
MsgBox("Date of birth: " & DOB(4))
Case is Name(5)
MsgBox("Date of birth: " & DOB(5))
End Select
End Sub
End Class
我会显示程序的图片,但visual basic出于某种原因不断删除它,不允许我重新添加按钮
以下是错误列表的图像:
)
公开课表格1 作为字符串的Dim DOB(5) 作为整数的Dim i Private Sub btenter_Click(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理btenter。单击 Dim名称(5)作为字符串
Dim Counter As Integer
txtNameInp.Text = Name(i)
txtDOBInput.Text = DOB(i)
Counter = 0
For i = 1 To 5
If Counter = 6 Then
MsgBox("You can only enter 5 names and DOBs")
End If
Name(i) = txtNameInp.Text
DOB(i) = txtDOBInput.Text
Counter = Counter + 1
Next i
End Sub
Private Sub btnFindDOB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFindDOB.Click
Select Case Name(i)
Case Name(1)
MsgBox(DOB(1))
Case Name(2)
MsgBox(DOB(2))
Case Name(3)
MsgBox(DOB(3))
Case Name(4)
MsgBox(DOB(4))
Case Name(5)
MsgBox(DOB(5))
End Select
End Sub
末级
这里有一个错误:-当我尝试输入第二个数字时,会发生这种错误。使用错误图片而不是代码中的注释来指示错误的位置和文本,很难精确,但从我所看到的:
- 表单已经有一个
属性,您正试图通过数组重新定义它。改用类似于名称
的方法myNames
- 您有一个名为
的模块级变量,还有一个本地变量。将全局设置更改为有用的设置,如i
。这将跟踪您当前存储到的元素curPosition
- 如果要在6时停止向数组中添加,则需要在代码中这样做。在MsgBox后添加
;您希望在将任何内容存储到阵列之前执行此操作,而不是之后。可能会添加一条消息,说“现在我将告诉你一个名字的DOB”李>Exit Sub
- 如果你想变得聪明(怀疑),请在表单上同时添加“猜测姓名”和
按钮,并报告给定DOB的姓名。基本上是相同的代码Guess DOB
- “输入代码”按钮将在每次单击时运行,因此您不需要循环。顺便说一句,这完全是胡说八道:
你正在用Name(i)=i
碰巧是什么覆盖一切。只需将i
作为索引添加到curPosition
和myNames
,然后将其递增: myNames(curPosition)=txtInputName.TextmyDOB
- 关系错误源于此:
大小写为Name(1)
is
不是(is
用于对象,而不是字符串)。这里的代码也有点不稳定,因为如果i
,您无法控制值。要比较txtInputName
:
Select Case txtInputName.Text
Case = Name(1) ' ie does txtInputName match the value in Name(1)?
...
-您可以在这里使用For循环,而不是case语句,以获得更少的代码
让我们学习关于课堂的知识。类将把数据保存在一起,而不是将相关信息片段彼此分离的数组
Public Class Person
Public property Name As String
Public Property DOB As DateTime ' I refuse to store a Date as string
Public Sub New(sName as String, dt as DateTime)
Name = sName
DOB = dt
End Sub
End Class
接下来,一个漂亮的列表来保存一些person对象。列表类似于数组,但更智能:
Private pList As New List(Of Person)
添加一个人:
' ToDo: check that the date is valid using TryParse instead
' this exercise is left to the student
Dim p As New Person(txtInputName.Text, Datetime.Parse(txtInputDOB.Text))
plist.Add(p)
' case insensitive search
Dim search As String = txtNameToFind.Text.ToLowerInvariant
For Each p as Person In pList
If P.Name.TolowerInvariant = search Then
txtDOB.Text = p.DOB.ToString
Exit For
End If
Next
找到一个人:
' ToDo: check that the date is valid using TryParse instead
' this exercise is left to the student
Dim p As New Person(txtInputName.Text, Datetime.Parse(txtInputDOB.Text))
plist.Add(p)
' case insensitive search
Dim search As String = txtNameToFind.Text.ToLowerInvariant
For Each p as Person In pList
If P.Name.TolowerInvariant = search Then
txtDOB.Text = p.DOB.ToString
Exit For
End If
Next
试试这个:
Public Class Form1
Dim Name, DOB As List(Of String) 'Lists are better in this situation.
Private Sub btnNameEnter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNameEnter.Click
'You don't need to specify the index in lists.
Name.Add(txtInputName.Text)
DOB.Add(txtInputDOB.Text)
txtInputName.Clear()
txtInputDOB.Clear()
End Sub
Private Sub btnFindDOB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFindDOB.Click
'You get the index of the name you are searching for and get DOB for this index.
MsgBox("Date of birth: " & DOB.Item(Name.IndexOf(txtInputName.Text)))
End Sub
End Class
我不知道该怎么办,我班上的人只使用了if语句和select case。if语句和select case会起作用,只是不是你使用它们的方式。作为家庭作业,如果你还没有学习过,那么上课和列清单可能不是一个好主意。从第一部分(名称、i、Is)中提到的更改开始,并记住编程是一项精度练习;警告意味着我不知道怎么写,但我不知道他们怎么做,几乎没有任何代码和工作,我不能声明名称,因为一些1D数组B。嗯,抱怨它肯定会有帮助。我告诉过您可能存在的问题:表单已经有Name属性,所以请对数组使用
myNames
。我不能确定,因为我们不知道哪一行代码与该错误相关-您需要更清楚地描述问题。点击错误,它会把你带到行,你可以在你的帖子中标记它,让我们知道是什么,我重写了代码,仍然不起作用。我还将包括一些错误的图像。(我会把它作为答案发布)