2016-06-08 9 views
2

Имея немного мозгового пердеть, чтобы быть честным, поэтому я извиняюсь, если это простой вопрос с простым ответом!Увеличьте или уменьшите значения с течением времени

Я пытаюсь создать целое число, которое будет увеличиваться по значению на + (и, если возможно, минус (чтобы оно могло меняться естественным образом)) со временем через таймер. Это мой текущий код:

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() 

I добавлен код:

Dim temp2 As Decimal 
temp2 = temp += 0.01 
txt_temp.Text = temp 

, но это, кажется, вопрос, как я получаю: «конец заявления ожидаемого». Был бы способ получить это, возможно, колебаться (случайным образом, если это возможно, хотя это не вызывает беспокойства) на +/- 0,01 за каждую секунду 60-секундного таймера. Причина этого заключается в том, что я создаю приложение температуры как назначение, поэтому мне нужно, чтобы температура колебалась на +/- 0,01, когда приложение работает, чтобы имитировать естественное колебание температуры.

+0

'temp2 = температура + = 0.01' два утверждения:' температура + = .01' для увеличения температуры, затем 'temp2 = temp', чтобы назначить его. Я не мог полностью следить за остальной частью саги, но это кажется длинным способом для incr или decr переменной – Plutonix

+0

Мои извинения, я сделал temp2 = temp + = 0.01, чтобы что-то проверить, это фактически temp + = 0.01 (который отсчитывает от 0,01 и идет вверх), однако мне нужно, чтобы это добавление к значению, которое вытягивается из массива (из которого извлекается случайное значение) –

+1

Ваша переменная temp2 выглядит бесполезной, вы можете ее удалить. –

ответ

3

Для первоначально размещен вопрос, сообщение об ошибке является результатом:

temp2 = temp += 0.01 

Это пытается объединить 2 заявления:

temp += .01 
temp2 = temp 

Для большего вопроса, этот код должен позволить каждому начальное значение колебаться. Я не знаю, если каждый из них должен сделать это самостоятельно, так что вы, возможно, придется изменить часть этого:

' form level vars: 
Private RNG As Random() 
Private currVals As Decimal() = {80D, 90D, 100D, 110D, 120D} 
Private TBs As TextBox() 

Затем инициализирует массив туберкулезу в виде нагрузки:

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 
+0

Абсолютно превосходный ответ. Я ценю вашу поддержку и терпение @Plutonix - имею виртуальную пинту на мне! –

Смежные вопросы