老实说,如果这是一个简单的问题,有一个简单的答案,我真的很抱歉。
我正试图通过计时器创建一个整数,它的值将增加+(如果可能的话,减号(以便它可以自然波动))。这是我目前的代码:
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所以,我给第二个变量分配了一个变量,这样温度就可以提高了(顺便说一下,是从一个随机数组中提取的)。
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,因为应用程序运行模拟自然温度波动。
发布于 2016-06-08 14:36:20
对于最初发布的问题,错误消息的结果是:
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
NextUI控件是可怕的变量,特别是在这种情况下。文本控件包含字符串,您正在使用小数。因此,代码更改数组值并更新控件(这似乎是您所追求的)。
如果所有值的更改都是相同的,那么只需在循环之外选择一个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 Functionhttps://stackoverflow.com/questions/37704348
复制相似问题