Am creat un mic stoc de brokeraj joc ca un proiect secundar și a fugit într-o problemă

0

Problema

În prezent, jocul randomizes nou prețul de vînzare a valorilor de zile în joc de fiecare dată când form5 se închide și se redeschide. Scopul meu este de a avea un studiu randomizat valoare de zile: 2, 8, 5, 3, 13, 24, 29, în momentul în care jocul creează o valoare setată pentru o zi, dar atunci când în joc se termină a doua zi și a doua zi începe, atât ziua, cât una și două prețuri sunt randomizate. Atunci când această formă este închis și redeschis prețurile intamplare pentru aceste 2 zile din nou.

Aici este subrutina pentru form2: acest formular afișează stocul disponibil marci utilizatorul poate investi în, acest lucru arată subrutina pentru atunci când utilizatorul face clic pe tesla stoc:

Public Shared Sub tesla(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Teslal.Click


    stockbrand.tesla()
    Teslastock.Show()
End Sub

Aici este subrutina pentru stockbrand.tesla:

Shared Sub tesla()
    stockrand(2, 8, 5, 3, 13, 24, 29)
End Sub

și apoi stockrand este responsabil pentru generarea de valori aleatoare în zilele specificate:

 Public Shared Function stockrand(ByVal a As Integer, ByVal b As Integer, ByVal c As Integer, ByVal d As Integer, ByVal e As Integer, ByVal f As Integer, ByVal g As Integer)
    For i As Integer = 1 To Form2.DAYno.Text

        If i = a Then
            Teslastock.at1986(a.ToString & "/8/86 1986", CInt(Int((11 * Rnd()) + 1)) * 2000)

        ElseIf i = b Then
            Teslastock.at1986(i.ToString & "/8/86 1986", CInt(Int((11 * Rnd()) + 1)) * 2000)

        ElseIf i = c Then
            Teslastock.at1986(i.ToString & "/8/86 1986", CInt(Int((11 * Rnd()) + 1)) * 2000)

        ElseIf i = d Then
            Teslastock.at1986(i.ToString & "/8/86 1986", CInt(Int((11 * Rnd()) + 1)) * 2000)

        ElseIf i = e Then
            Teslastock.at1986(i.ToString & "/8/86 1986", CInt(Int((11 * Rnd()) + 1)) * 2000)

        ElseIf i = f Then
            Teslastock.at1986(i.ToString & "/8/86 1986", CInt(Int((11 * Rnd()) + 1)) * 2000)

        ElseIf i = g Then
            Teslastock.at1986(i.ToString & "/8/86 1986", CInt(Int((11 * Rnd()) + 1)) * 2000)
        Else
            Teslastock.at1986(i.ToString & "/8/86 1986", Math.Sin(i) * 2000)
        End If
    Next
End Function

graficul create de funcția arată similar cu un păcat grafic cu excepțiile specificate zile și preț negativ valorile se înmulțesc cu -1 pentru a da un preț rațional

Teslastock.show-uri de forma pe care graficul este plasat

vb.net
2021-11-23 21:56:57
1

Cel mai bun răspuns

0

Unele dintre probleme sunt cauzate de a nu avea Opțiune Strict Pe. Ar trebui să fie pe. Project Properties -> Compile tab. De asemenea, pentru viitoarele proiecte de Instrumente -> Opțiuni -> Proiecte și Soluții -> VB Implicite

Funcții în vb.net nevoie de un Type și o Return declarație. Nu returnezi nimic deci, de ce ești folosind un Function? Utilizați un Sub.

Nu stiu de ce DAYno pe Form2 este, dar când văd un Text proprietatea înseamnă o String pentru mine. Nu poți avea o String în To clauza de un For buclă, astfel CInt()

Declara un exemplu de Random clasa la Classnivel. Avem nevoie doar de un nou număr aleator (nu un nou exemplu de Random clasa) o dată la fiecare iterație. Aproape ca am putea face, ar fi un număr între 1 o 12. Abia îmi mai amintesc Rnd(). La Next metoda de Random clasa oferă o Integer inclusiv primul argument și mai puțin decât cea de-a doua.

Toate aceste If...ElseIfs-au aproape identice cod. Am încercat să-l rezolve cu o Select Case. Primele 2 cazuri trimite un Integer pentru a at1986 dar cel de-al treilea trimite un Doubleastfel cele 2 metode în Teslastock clasa cu semnături diferite.

Poate că problemele vor dispărea cu aceste corecții.

Private Rand As New Random()

Public Sub stockrand(ByVal a As Integer, ByVal b As Integer, ByVal c As Integer, ByVal d As Integer, ByVal e As Integer, ByVal f As Integer, ByVal g As Integer)
    For i As Integer = 1 To CInt(Form2.DAYno.Text)
        Dim r = Rand.Next(1, 13)
        Select Case i
            Case a
                Teslastock.at1986($"{a}/8/86 1986", r * 2000)
            Case b, c, d, e, f, g
                Teslastock.at1986($"{i}/8/86 1986", r * 2000)
            Case Else
                Teslastock.at1986($"{i}/8/86 1986", Math.Sin(i) * 2000)
        End Select
    Next
End Sub

Public Class Teslastock
    Public Shared Sub at1986(strDate As String, aNumber As Integer)
        'Some code
    End Sub

    Public Shared Sub at1986(strDate As String, aNumber As Double)
        'Some code
    End Sub
End Class
2021-11-24 03:29:56

În alte limbi

Această pagină este în alte limbi

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................