vb.net - 执行 Do While 循环的索引超出范围
问题描述
我正在尝试通过 Do while/until 循环执行迭代演算。我设置了它,但是在调试时我收到了这个错误:Index was out of range. Must be non-negative and less than the size of the collection.
这是我正在使用的代码:
t=0
Do While TEMsprinkler(t) < CInt(TextBox12.Text)
t += 1
TEMsprinkler(t + 1) = (TEMsprinkler(t) + ((tjet(t + 1) - TEMsprinkler(t)) * (1 - Math.Exp(-1 / tau(t + 1)))) + ((tjet(t + 1) - tjet(t)) * t * ((Math.Exp(-1 / tau(t + 1))) - (1 / tau(t + 1)) - 1)))
Loop
现在,我不明白错误可能出在哪里:声明了 TEMsprinkler(t)(作为开始迭代的边界条件);其他变量(双精度列表)已经声明并填充了正数。我在哪里做错了?提前致谢。此致。
编辑: 我尝试以多种方式编辑我的代码。由于我使用的是 List(Of Double) 而不是数组,因此我编辑了 TEMsprinkler 行,如下所示:
Do While TEMsprinkler(t) < CInt(TextBox12.Text)
t += 1
TEMsprinkler.Add(TEMsprinkler(t) + ((tjet(t + 1) - TEMsprinkler(t)) * (1 - Math.Exp(-1 / tau(t + 1)))) + ((tjet(t + 1) - tjet(t)) * t * ((Math.Exp(-1 / tau(t + 1))) - (1 / tau(t + 1)) - 1)))
Loop
我又遇到了同样的错误。然后我尝试编辑索引位置: t+1 索引变为 t 并且 t 索引变为 t-1 位置并开始从 1 增加 t 并且不再从 0 增加,但我总是出现越界错误。
编辑二:按照建议,我编辑了我的代码,声明了分隔变量,问题似乎出在 Do While 行:
t=1
Do While TEMsprinkler(t) < CInt(TextBox12.Text)
t += 1
Dim TSPKITEM = TEMsprinkler(t)
Dim TJITEM = tjet(t)
Dim ITEMTJ = tjet(t + 1)
Dim TAUITEM = tau(t + 1)
TEMsprinkler.Add(TSPKITEM + ((ITEMTJ - TSPKITEM) * (1 - Math.Exp(-1 / TAUITEM))) + ((ITEMTJ - TJITEM) * t * ((Math.Exp(-1 / TAUITEM)) - (1 / TAUITEM) - 1)))
Loop
显然错误总是一样的。
编辑 III: * 我已经构建了三个不同的 List(of Double),它们的边界条件较低,需要我进行迭代。这些列表的维度大于 CInt(Textbox12.Text) 值。然后我声明了 Do While 循环来构建 TEMsprinkler 变量(也声明为 List(of Double))。这是代码:
Dim tjet As New List(Of Double)()
Dim ujet As New List(Of Double)()
Dim tau As New List(Of Double)()
Dim TEMsprinkler As New List(Of Double)()
Dim t As Integer
t = 1
TEMsprinkler.Add(CDbl(TextBox8.Text))
tjet.Add(CDbl(TextBox8.Text))
ujet.Add(0)
tau.Add(0)
For i = 1 To CInt(Form3.ListBox1.Items.Count) - 1
tjet.Add(CDbl(TextBox8.Text) + (5.38 * ((CDbl(Form3.ListBox1.Items(i)) / r) ^ 0.666) / h))
ujet.Add(0.197 * (CDbl(Form3.ListBox1.Items(i)) ^ 0.333) * (h ^ 0.5) / r ^ 0.833)
tau.Add((CInt(TextBox2.Text) / (ujet(i) ^ 0.5)))
Next
Do While t < TEMsprinkler.Count - 1 AndAlso TEMsprinkler(t) < CInt(TextBox12.Text)
t += 1
Dim TSPKITEM = TEMsprinkler(t)
Dim TJITEM = tjet(t)
Dim ITEMTJ = tjet(t + 1)
Dim TAUITEM = tau(t + 1)
TEMsprinkler.Add(TSPKITEM + ((ITEMTJ - TSPKITEM) * (1 - Math.Exp(-1 / TAUITEM))) + ((ITEMTJ - TJITEM) * t * ((Math.Exp(-1 / TAUITEM)) - (1 / TAUITEM) - 1)))
Loop
解决方案
推荐阅读
- git - 如何从功能分支中删除文件?
- python - 使用列表输入文本和按空格分割字符串需要什么操作来获取输出?答案最受赞赏
- django - 显示父数据是否在子表中使用的 ORM 或 RAW SQL
- python - 如何将数据集加载到 Jupyter Notebook
- maven - 使用fabric8 maven插件运行带有外部配置文件的docker镜像
- amazon-web-services - aws appsync 连接不会从所有模型中带回项目
- c++ - 是否可以将函数导入命名空间,但不能导出?
- javascript - Angular:尝试添加验证码。错误=>没有名称的表单控件的值访问器:'captcha'
- machine-learning - 从 pickle 文件重新训练加载的模型
- maven - Teamcity 问题:无法将模块添加到当前项目,因为它不是包装类型“pom”