“字符串的一维数组”类型的值无法转换为“整数的一维数组”,因为“字符串”不是从“整数”派生的

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] 类型

Swift“无法将''类型的值转换为'String'类型

无法将“字符串”类型的值转换为预期的参数类型 [任何]

无法将“__NSCFNumber”()类型的值快速转换为“NSArray”

Swift:无法将“NSDate”类型的值转换为预期的参数类型“NSDateComponents”

无法将 UIViewController 类型的值转换为 PatternDetailViewController