2016-06-08 5 views
2

Um ehrlich zu sein, habe ich ein bisschen Hirnfurz, also entschuldige ich mich, wenn das eine einfache Frage mit einer einfachen Antwort ist!Werte im Laufe der Zeit erhöhen oder verringern

Ich versuche, eine ganze Zahl zu erstellen, die durch einen Timer um + (und wenn möglich, minus (so dass es natürlich schwanken kann)) über die Zeit erhöht wird. Dies ist mein aktueller Code:

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 

Also, was ich tat, war ich eine zweite Variable zugewiesen, so dass die Temperatur erhöht werden kann (dies btw, wird aus einer zufälligen Anordnung gezogen)

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 den Code hinzugefügt:

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

aber dies scheint die Frage zu sein, wie ich: „Ende der Anweisung erwartet“. Wäre es möglich, dass dies möglicherweise (zufällig, wenn möglich, obwohl dies keine Sorge ist) um +/- 0,01 für jede Sekunde des 60-Sekunden-Timers schwankt. Der Grund dafür ist, dass ich eine Temperaturanwendung als Zuweisung erstelle, also muss die Temperatur um +/- 0.01 schwanken, während die Anwendung läuft, um natürliche Temperaturschwankungen zu simulieren.

+0

'TEMP2 = Temp + = 0.01' beiden Aussagen ist:' Temp + = .01' Temp zu erhöhen, dann 'temp2 = temp', um es zuzuweisen. Ich konnte dem Rest der Saga nicht ganz folgen, aber das scheint ein langer Weg zu sein, eine Variable zu erhöhen oder zu dekrementieren. – Plutonix

+0

Entschuldigung, ich habe die temp2 = temp + = 0.01 um etwas zu testen, es ist eigentlich temp + = 0.01 (was von 0,01 zählt und nach oben geht), aber ich brauche dieses HINZUFÜGEN zu dem Wert, der aus dem Array gezogen wird (von dem ein zufälliger Wert gezogen wird) –

+1

Ihre temp2 Variable sieht nutzlos aus, Sie könnten sie entfernen. –

Antwort

3

Für die ursprünglich Frage gestellt, die Fehlermeldung das Ergebnis ist:

temp2 = temp += 0.01 

Dies versucht 2 Aussagen zu kombinieren:

temp += .01 
temp2 = temp 

Für die größere Frage, sollte dieser Code bei jedem erlauben Anfangswert zu schwanken. Ich weiß nicht, ob jeder soll so unabhängig machen, so dass Sie vielleicht ein Teil davon sich ändern müssen:

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

dann die TB-Array Last in Form initialisieren:

TBs = {TextBoxA, TextBoxB, TextBoxC, TextBoxD, TextBoxE} 
RNG = New Random() 

Jetzt können Sie schwanken die Basiswerte in einer Schleife, die von einem Timer Tick oder was auch immer aufgerufen werden kann.

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-Steuerelemente sind schrecklich Variablen, insbesondere in diesem Fall: Die TextBox Array ist nur der Code zu erlauben, die Anzeige in einer Schleife zu aktualisieren, können die Werte auch einzeln außerhalb der Schleife zugeordnet werden. Die Textsteuerelemente enthalten Zeichenfolge, Sie arbeiten mit Dezimalstellen. Der Code ändert also den Array-Wert und aktualisiert das Steuerelement (scheint wie, was Sie suchen). Wenn die Änderung für alle Werte gleich sein soll, wählen Sie einfach eine außerhalb der Schleife. NextBoolean ist eine Erweiterung Methode, die lange Form wäre:

Dim thisVal = RNG.Next(0, 2) ' pick from 0 to 1 
If thisVal = 0 Then 
    ' add 
Else 
    ' subtract 
End If 

Oder:

<Extension> 
Public Function NextBoolean(RNG As Random) As Boolean 
    Return RNG.NextDouble() >= 0.5 
End Function 
+0

Absolut hervorragende Antwort. Ich schätze Ihre Unterstützung und Geduld @Plutonix - ein virtuelles Pint auf mich! –

Verwandte Themen