“字符串的一维数组”类型的值无法转换为“整数的一维数组”,因为“字符串”不是从“整数”派生的
Posted
技术标签:
【中文标题】“字符串的一维数组”类型的值无法转换为“整数的一维数组”,因为“字符串”不是从“整数”派生的【英文标题】:Value of type '1-dimensional array of String' cannot be converted to '1-dimensional array of Integer' because 'String' is not derived from 'Integer' 【发布时间】:2016-04-20 02:20:15 【问题描述】:我在尝试使用线性搜索来查找用户在数组中输入的名称时遇到此错误。这是我声明数组并获取输入的时候。
Public Const SIZE_ARRAY = 9
Public Sub cmdStart_Click(sender As Object, e As EventArgs) Handles cmdStart.Click
Dim myArray(SIZE_ARRAY) As String
Dim index As Integer
Public Sub cmdStart_Click(sender As Object, e As EventArgs) Handles cmdStart.Click
Dim count As Integer = 0
For Me.index = 0 To SIZE_ARRAY
myArray(index) = InputBox("Enter a name, Enter a name")
count = count + 1
Next
If count = 10 Then
lblInstructions.Visible = False
cmdStart.Visible = False
lblInstructions2.Visible = True
txtSearch.Visible = True
lblOutput.Visible = True
cmdSearch.Visible = True
End If
End Sub
这里是我使用线性搜索的地方。
Public Sub cmdSearch_Click(sender As Object, e As EventArgs) Handles cmdSearch.Click
Dim found As Boolean
Dim name As String
name = txtSearch.Text
found = LinearSearch(myArray, Val(name))
If found Then
lblOutput.Text = name & " was found at cell " & index
Else
lblOutput.Text = name & " was not found"
End If
End Sub
这里是线性搜索函数
Public Function LinearSearch(ByVal list() As Integer, ByVal searchValue As Integer) As Boolean
Dim found As Boolean = False
Dim index As Integer
While found = False And index <= UBound(list)
If list(index) = searchValue Then
found = True
Else
index += 1
End If
End While
Return found
End Function
【问题讨论】:
错误信息的哪一部分你不明白? 就像一个小注释 - 在让用户输入名称的 Sub 中 - 在循环结束后,count
变量将始终等于 10。围绕后续代码块的If..End If
语句是不必要的。 - 干杯
另外 - 抱歉 - 我注意到您想在 cmdSearc_click 子程序中使用 index
来显示名称的找到位置。但是,LinearSearch
子中的 index
变量 - 尽管它具有相同的名称,但不是同一个变量。所以你不会从线性搜索中得到正确的索引。
【参考方案1】:
myArray
是一个String
数组,但您的方法LinearSearch
需要两个参数:一个Integer
数组和一个Integer
。我假设您要求要搜索的数组的类型为 String
,并且搜索值的类型也为 String
我的 VB.NET 生锈了,但这里有一些未经测试的线性搜索代码。
Public Function LinearSearch(ByVal list() As String, ByVal searchValue As String) As Boolean
For Each item As String In list
If item = searchValue Then
Return True
End If
Next
Return False
End Function
【讨论】:
这个答案有问题吗?仅仅因为您不喜欢 OPs 问题,并不意味着您拒绝投票答案。解释你自己。 我不确定为什么这个答案也被否决了。它描述了确切的问题并提供了解决方案。以上是关于“字符串的一维数组”类型的值无法转换为“整数的一维数组”,因为“字符串”不是从“整数”派生的的主要内容,如果未能解决你的问题,请参考以下文章
无法将 [Struct] 类型的值快速转换为 [string] 类型
无法将“__NSCFNumber”()类型的值快速转换为“NSArray”