停我的任务的这一部分,我需要做到以下几点:for循环后1迭代
创建一个返回字符串类型的键和整数类型值的排序列表的功能。在函数内部,声明一个与函数返回类型具有相同结构的新排序列表。然后,使用嵌套for循环填充排序列表,查看产品列表和年份列表,以便将产品和年份连接在一起以创建密钥,并从需求表数组中获取相应的需求值作为值将此键输入到排序列表中。
我已经写了下面的代码来做到这一点,但是它在1次迭代后会抛出System.ArgumentException在System.dll中。测试MessageBox将只显示“ModelX 2013 205”,然后将引发错误。
Public Function GetProductDemand() As SortedList(Of String, Integer)
Dim prodDemand As New SortedList(Of String, Integer)
Dim count As Integer = 0
For Each product In products
For Each yr In years
Dim key As String
key = product & " " & yr
For i As Integer = 0 To 4
prodDemand.Add(key, demand(count, i)) 'stops here after 1 iteration
MessageBox.Show(key & " " & prodDemand(key)) 'test to display results
Next
Next
count += 1
Next
Return prodDemand
End Function
为什么会出现这种情况?下面是相关的代码的其余部分:
Dim products As List(Of String)
Dim years As List(Of String)
Dim demandList As SortedList(Of String, Integer)
Dim demand As Integer(,)
Private Sub frmDemand_Load(sender As Object, e As EventArgs) Handles MyBase.Load
products = GetProducts()
years = GetYears()
demand = GetDemand()
demandList = GetProductDemand()
End Sub
Private Function GetDemand() As Integer(,)
Return {
{205, 220, 245, 230},
{160, 174, 152, 144},
{480, 424, 396, 456}
}
End Function
Public Function GetProducts() As List(Of String)
Dim prods As New List(Of String)
prods.Add("ModelX")
prods.Add("ModelY")
prods.Add("ModelZ")
Return prods
End Function
Public Function GetYears() As List(Of String)
Dim yr As New List(Of String)
yr.Add("2013")
yr.Add("2014")
yr.Add("2015")
yr.Add("2016")
Return yr
End Function
'prodDemand.Add(key,demand(count,i))'我们可以看到prodDemand和demand吗?我认为你在循环的第二次迭代中用不正确的参数来调用它/它们。 –
@ blaze_125:你是对的 - “SortedList”基本上是一个字典,并且多次添加相同的键会引发错误(重复键)。 –