随着时间的推移增加或减少值

时间:2016-06-08 13:45:44

标签: .net vb.net

说实话有一点大脑放屁,所以如果这是一个简单的答案,我会道歉!

我正在尝试通过计时器创建一个整数,该整数将通过+增加值(并且如果可能的话,减去(以便它可以自然地波动))。这是我目前的代码:

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。

1 个答案:

答案 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