说实话有一点大脑放屁,所以如果这是一个简单的答案,我会道歉!
我正在尝试通过计时器创建一个整数,该整数将通过+增加值(并且如果可能的话,减去(以便它可以自然地波动))。这是我目前的代码:
If timer_temp_int = 0 Then
timer_temp.Enabled = False
lblRemaining.Text = "0"
MsgBox("Please check the temperature of the heater")
Else
'PROBLEM HERE
Dim temp2 As Decimal
temp2 = temp += 0.01
txt_temp.Text = temp
timer_temp_int -= 1
End If
所以,我做的是我分配了第二个变量,以便可以增加温度(这个btw,是从随机数组中提取的)
Dim rn As New List(Of Integer)
Dim temp As Integer
Dim rnd As New Random
rn.Add(80)
rn.Add(90)
rn.Add(100)
rn.Add(110)
rn.Add(120)
Dim randomValue As Integer = rn(rnd.Next(0, 5))
temp = randomValue.ToString()
我添加了代码:
Dim temp2 As Decimal
temp2 = temp += 0.01
txt_temp.Text = temp
但这似乎是问题,因为我得到:“预期结束”。 有没有办法让这个可能波动(随机,如果可能,虽然这不是一个担心)60秒计时器的每秒+/- 0.01。这样做的原因是我正在创建一个温度应用程序作为赋值,因此当应用程序运行以模拟自然温度波动时,我需要温度波动+/- 0.01。
答案 0 :(得分:3)
对于最初发布的问题,错误消息是以下结果:
temp2 = temp += 0.01
这是试图合并两个陈述:
temp += .01
temp2 = temp
对于较大的问题,此代码应允许每个初始值波动。我不知道每个人是否应该独立完成,所以你可能不得不改变其中的一部分:
' form level vars:
Private RNG As Random()
Private currVals As Decimal() = {80D, 90D, 100D, 110D, 120D}
Private TBs As TextBox()
然后在表单加载中初始化TB数组:
TBs = {TextBoxA, TextBoxB, TextBoxC, TextBoxD, TextBoxE}
RNG = New Random()
现在你可以在循环中波动基值,这可以从计时器滴答或其他任何东西调用。 TextBox
数组仅用于允许代码在循环中更新显示,值也可以逐个在循环中映射:
For n As Int32 = 0 To currVals.Length - 1
' next bool is an extension; same as RNG.Next(0,2)
If RNG.NextBoolean() Then
currVals(n) += 0.01D
Else
currVals(n) -= 0.01D
End If
TBs(n).Text = currVals(n).ToString() ' update display
Next
UI控件是可怕的变量,尤其是在这种情况下。文本控件包含字符串,您正在使用小数。因此代码更改了数组值并更新了控件(似乎就像你所追求的那样)。
如果所有值的更改都相同,只需在循环外选择一个Boolean
即可。 NextBoolean
是一种扩展方法,长格式为:
Dim thisVal = RNG.Next(0, 2) ' pick from 0 to 1
If thisVal = 0 Then
' add
Else
' subtract
End If
或者:
<Extension>
Public Function NextBoolean(RNG As Random) As Boolean
Return RNG.NextDouble() >= 0.5
End Function