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周的密集努力中提出了上述问题,试图通过从头开始学习相关编程来解决一项自行分配的(无用的)任务。几个月后,当我再次登录时,我忘了我在说什么,以为有人用了我的帐户。