这个循环有么有问题啊,算出来的结果老不对

qq_39336686 2017-09-25 08:50:13
Do While d0 < d Or d0 > d1
b = b + 0.01
h = Val(Text10.Text)
u0 = (0.7 * ((h + 1) / b + 11) ^ 0.5) / 3.52
tn = Val(Text1.Text)
t0 = tn - ((tn - 21) * (((h + 1) / b + 11) ^ 0.5)) / 3.02
td = Val(Text6.Text)
td = td + 1
If t0 > td Then
t0 = t0
Else
t0 = td
End If
L = Val(Text2.Text)
W = Val(Text3.Text)
Q = Val(Text9.Text)
te = (0.13 * Q) / ((u0 ^ 0.25) * L * W) + t0
z = Val(Text12.Text)
qs = Q / (1.205 * 1.005 * z * (te - t0))
d0 = (qs - 3.14 * z * u0 * (b ^ 2)) / (3.14 * z * u0 * b)
d = 1
d1 = d + 0.3
Loop
...全文
478 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
VB.Net 2017-10-19
  • 打赏
  • 举报
回复
说实在的,请把你的赋值请放在循坏外, 你的代码里面每循环一次你就赋值一次:h、tn、L、W、Q、z、d、d1 d0、b进入循环前赋值没有?这些你都应该检查。 没有具体详细代码答案,我们也没有办法帮你检查,只能说你的语法上没有发现问题。 h = Val(Text10.Text) tn = Val(Text1.Text) td = Val(Text6.Text) td = td + 1 L = Val(Text2.Text) W = Val(Text3.Text) Q = Val(Text9.Text) z = Val(Text12.Text) Do While d0 < 1 Or d0 > 1.3 b = b + 0.01 u0 = (0.7 * ((h + 1) / b + 11) ^ 0.5) / 3.52 t0 = tn - ((tn - 21) * (((h + 1) / b + 11) ^ 0.5)) / 3.02 If t0 > td Then t0 = t0 Else t0 = td End If te = (0.13 * Q) / ((u0 ^ 0.25) * L * W) + t0 qs = Q / (1.205 * 1.005 * z * (te - t0)) d0 = (qs - 3.14 * z * u0 * (b ^ 2)) / (3.14 * z * u0 * b) Loop
VB.Net 2017-10-19
  • 打赏
  • 举报
回复
说实在的,你的赋值请放在循坏外,每循环一次你就赋值一次。 你循环里面的变量,很多是不变的。不知道你为什么这么写。 难道是为了消耗计算机资源?
lylkr 2017-10-06
  • 打赏
  • 举报
回复
你不说正确结果,怎么猜
im战术 2017-10-03
  • 打赏
  • 举报
回复
一般要把取控件数值的"活"放到循环体之前 如:h = Val(Text10.Text) 这些很浪费计算量,你也不能保证这个循环内你不手动改变 Text10.Text等这些值. 一但改变,你所要计算的结果一定乱,乱还不说还可能出现如 被除数不能为0 的错误报告. 还有请把 Do While d0 < d Or d0 > d1 改一下位置Do While d0 > d1Or d0 < d 加点括号 Do While (d0 < d) Or (d0 > d1) 那都是可以的. 被你的<>闪瞎了~我还以为是Do While的什么新语法呢! 再说如果你真的想手动改变数值,从而得到这个d0是不是 (d0 < d) Or (d0 > d1) 请放弃使用Do While,While,Do这些会形成死循环的语句,感觉你的"道行"还不够呀~~~ 直接在更改每个TextBox数值时的事件中添加如下这样的代码就OK了

Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged,TextBox2.TextChanged,TextBox3.TextChanged
    你的计算过程.......
    .......
    If (d0 < d) Or (d0 > d1) Then
          TextBox4.text = "成功啦~"
    Else
          TextBox4.text = "失败啦~"
    End If
End Sub
  • 打赏
  • 举报
回复
如: If t0 > td Then t0 = t0 Else t0 = td End If 可以写: If t0 < td Then t0 = td End If 因为t0 = t0这是不需要的代码
  • 打赏
  • 举报
回复
初学者如果发现程序有问题,最好的学习方法就是把每句代码的作用写出来审阅分析 其实写代码不那么重要,把问题分析清晰透彻才是关键,次构思逻辑,最后才是写代码实现.
qq_36814142 2017-09-25
  • 打赏
  • 举报
回复
新手学习一下

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧