Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vb.net array.sort()参数为什么短1?_Vb.net - Fatal编程技术网

vb.net array.sort()参数为什么短1?

vb.net array.sort()参数为什么短1?,vb.net,Vb.net,我使用如下代码对数组进行排序: Array.Sort(arr, 0, intEndingPosition, New myIComparer) Dim StringOfConcern As String Dim OneChar(65534), FrqOne(65534) As String Dim CntNewOnes, CntRptOnes As Integer Dim c As Char Dim i, j As Integer Dim isN

我使用如下代码对数组进行排序:

Array.Sort(arr, 0, intEndingPosition, New myIComparer)
    Dim StringOfConcern As String
    Dim OneChar(65534), FrqOne(65534) As String
    Dim CntNewOnes, CntRptOnes As Integer

    Dim c As Char
    Dim i, j As Integer
    Dim isNew As Boolean

        StringOfConcern = TextBox1.Text
        OneChar(0) = CStr(StringOfConcern(0))
        FrqOne(0) = 1
        i = 0
        j = 0 
        For Each c In StringOfConcern.Substring(1)
            isNew = True
            For j = 0 To i Step 1
                If CStr(c) = OneChar(j) Then
                    isNew = False
                    FrqOne(j) += 1
                    Exit For
                End If
            Next j
            If isNew = True Then
                i += 1
                OneChar(i) = CStr(c)
                FrqOne(i) = 1
            End If
        Next c

    CntNewOnes = i + 1

    CntRptOnes = 0 
    For i = 0 To CntNewOnes - 1 Step 1
        If FrqOne(i) > 1 Then CntRptOnes += 1
    Next i
我希望排序以索引
0
开始,以索引
intEndingPosition
结束。但是,最后一个元素
arr(intentingposition)
被遗漏,没有得到排序。为什么?


intentingposition
是这样预先计算的:

Array.Sort(arr, 0, intEndingPosition, New myIComparer)
    Dim StringOfConcern As String
    Dim OneChar(65534), FrqOne(65534) As String
    Dim CntNewOnes, CntRptOnes As Integer

    Dim c As Char
    Dim i, j As Integer
    Dim isNew As Boolean

        StringOfConcern = TextBox1.Text
        OneChar(0) = CStr(StringOfConcern(0))
        FrqOne(0) = 1
        i = 0
        j = 0 
        For Each c In StringOfConcern.Substring(1)
            isNew = True
            For j = 0 To i Step 1
                If CStr(c) = OneChar(j) Then
                    isNew = False
                    FrqOne(j) += 1
                    Exit For
                End If
            Next j
            If isNew = True Then
                i += 1
                OneChar(i) = CStr(c)
                FrqOne(i) = 1
            End If
        Next c

    CntNewOnes = i + 1

    CntRptOnes = 0 
    For i = 0 To CntNewOnes - 1 Step 1
        If FrqOne(i) > 1 Then CntRptOnes += 1
    Next i
排序如下。我原始问题中的代码只是说明性的。实际排序为:

    Array.Sort(FrqOne, OneChar, 0, CntNewOnes - 1)
    Array.Reverse(FrqOne, 0, CntNewOnes - 1)
    Array.Reverse(OneChar, 0, CntNewOnes - 1)

请注意

第三个参数是要排序的范围(
length
)中的元素数,而不是您建议的结束索引

因此,让我们假设您的
intentingposition
4
。这意味着您需要对5个元素进行排序,即索引
0、1、2、3、4
处的元素。但是,数字
4
是长度,而不是结束索引,因此您只能在索引
0、1、2、3
处对元素进行排序

这解释了为什么您观察到正在排序的元素比您预期的短一个

简单地说,第三个参数应该指定要排序的元素的长度,而不是结束索引

另一个例子:

考虑
String
类的
Substring
方法:

Public Function Substring (
    startIndex As Integer,
    length As Integer
) As String
然后假设我们有这段代码:

Dim temp As String = "testing"
Dim result As String = temp.Substring(0, 4)
result
现在是一个包含
4
字符的字符串,因为
Substring
调用中的
4
指示应检索的长度,而不是结束索引


如果
4
是结束索引,那么您希望
result
包含5个字符

注意

第三个参数是要排序的范围(
length
)中的元素数,而不是您建议的结束索引

因此,让我们假设您的
intentingposition
4
。这意味着您需要对5个元素进行排序,即索引
0、1、2、3、4
处的元素。但是,数字
4
是长度,而不是结束索引,因此您只能在索引
0、1、2、3
处对元素进行排序

这解释了为什么您观察到正在排序的元素比您预期的短一个

简单地说,第三个参数应该指定要排序的元素的长度,而不是结束索引

另一个例子:

考虑
String
类的
Substring
方法:

Public Function Substring (
    startIndex As Integer,
    length As Integer
) As String
然后假设我们有这段代码:

Dim temp As String = "testing"
Dim result As String = temp.Substring(0, 4)
result
现在是一个包含
4
字符的字符串,因为
Substring
调用中的
4
指示应检索的长度,而不是结束索引


如果
4
是结束索引,那么您希望
result
包含5个字符

。。。正在哪里设置
意图位置
?它的价值从何而来?。。。正在哪里设置
意图位置
?它的价值从何而来?背景:我有一点自学vba inside Word的经验。我以前从未使用过.net(语言)或Studio(环境),而今天的结果是,此后我也从未使用过。我在一生中只有一次的2周的密集努力中提出了上述问题,试图通过从头开始学习相关编程来解决一项自行分配的(无用的)任务。几个月后,当我再次登录时,我忘了我在说什么,以为有其他人使用了我的帐户。背景:我有一点自学vba inside Word的经验。我以前从未使用过.net(语言)或Studio(环境),而今天的结果是,此后我也从未使用过。我在一生中只有一次的2周的密集努力中提出了上述问题,试图通过从头开始学习相关编程来解决一项自行分配的(无用的)任务。几个月后,当我再次登录时,我忘了我在说什么,以为有人用了我的帐户。