首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >随时间增加或减少数值

随时间增加或减少数值
EN

Stack Overflow用户
提问于 2016-06-08 13:45:43
回答 1查看 117关注 0票数 2

老实说,如果这是一个简单的问题,有一个简单的答案,我真的很抱歉。

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

代码语言:javascript
运行
复制
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

所以,我给第二个变量分配了一个变量,这样温度就可以提高了(顺便说一下,是从一个随机数组中提取的)。

代码语言:javascript
运行
复制
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()

我添加了代码:

代码语言:javascript
运行
复制
Dim temp2 As Decimal
temp2 = temp += 0.01
txt_temp.Text = temp

但在我看来,这似乎是一个问题:“预期的声明结束”。有没有办法让它在60秒计时器的每一秒中以+/- 0.01的速度波动(如果可能的话,可能的话,尽管这不是一个担忧)。原因是我正在创建一个温度应用程序作为一个任务,所以我需要温度波动为+/- 0.01,因为应用程序运行模拟自然温度波动。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-08 14:36:20

对于最初发布的问题,错误消息的结果是:

代码语言:javascript
运行
复制
temp2 = temp += 0.01

这将尝试合并两个语句:

代码语言:javascript
运行
复制
temp += .01
temp2 = temp

对于更大的问题,这个代码应该允许每个初始值波动。我不知道每个人是否应该独立地这样做,所以你可能不得不改变其中的一部分:

代码语言:javascript
运行
复制
' form level vars:
Private RNG As Random()
Private currVals As Decimal() = {80D, 90D, 100D, 110D, 120D}
Private TBs As TextBox()

然后在表单加载中初始化TB数组:

代码语言:javascript
运行
复制
TBs = {TextBoxA, TextBoxB, TextBoxC, TextBoxD, TextBoxE}
RNG = New Random()

现在,您可以在循环中波动基值,这可以从计时器、滴答或其他什么调用。TextBox数组只允许代码更新循环中的显示,还可以在循环之外逐个映射这些值:

代码语言:javascript
运行
复制
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控件是可怕的变量,特别是在这种情况下。文本控件包含字符串,您正在使用小数。因此,代码更改数组值并更新控件(这似乎是您所追求的)。

如果所有值的更改都是相同的,那么只需在循环之外选择一个BooleanNextBoolean是一种扩展方法,其长形式如下:

代码语言:javascript
运行
复制
Dim thisVal = RNG.Next(0, 2)   ' pick from 0 to 1
If thisVal = 0 Then
    ' add
Else
     ' subtract
End If

或者:

代码语言:javascript
运行
复制
<Extension>
Public Function NextBoolean(RNG As Random) As Boolean
    Return RNG.NextDouble() >= 0.5
End Function
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37704348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档