Estoy creando un pequeño stock de corretaje de juego como un proyecto paralelo, y corrió a través de un problema

0

Pregunta

Actualmente, el juego aleatoriamente nuevo precio en la bolsa de valores para el juego de los días cada vez form5 cierra y vuelve a abrir. Mi objetivo es tener un estudio aleatorizado de valor en los días: 2, 8, 5, 3, 13, 24, 29, en el momento en que el juego crea un valor establecido para el primer día, pero cuando el juego finaliza el día y dos días comienza el día uno y dos precios son aleatorios. Cuando este formulario se cierra y vuelve a abrir los precios randomize para estos 2 días de nuevo.

Aquí está la subrutina para form2: este formulario muestra el stock disponible marcas que el usuario puede invertir en este se muestra la subrutina para cuando el usuario hace clic en el tesla stock:

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


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

Aquí está la subrutina para stockbrand.tesla:

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

y, a continuación, stockrand es el responsable de generar valores aleatorios en los días especificados:

 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

el gráfico creado por la función que se parece a un pecado gráfico con excepciones en los días especificados y negativo de los precios de los valores se multiplican por -1 para dar un racional precio

Teslastock.mostrar muestra la forma en que el gráfico se coloca

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

Mejor respuesta

0

Algunos de sus problemas son causados por no tener Option Strict On. Debe estar en on. Propiedades del proyecto -> pestaña Compilar. También para futuros proyectos Herramientas -> Opciones -> Proyectos y Soluciones -> VB valores Predeterminados

Funciones en vb.net necesita un Type y un Return declaración. No devolver cualquier cosa, así que ¿por qué estás usando un Function? El uso de un Sub.

No sé qué DAYno en Form2 es, pero cuando veo una Text propiedad significa una String para mí. Usted no puede tener una String en el To cláusula de un For bucle, por lo tanto el CInt()

Declarar una instancia de la Random clase en la Classnivel. Sólo necesitamos un nuevo número aleatorio (no una nueva instancia de la Random clase) una vez por iteración. Cerca de como yo lo podría hacer, sería un número entre 1 12. Apenas recuerdo Rnd(). El Next método de la Random clase proporciona un Integer incluido en el primer argumento y menos que el segundo.

Todos los If...ElseIfs tiene casi idéntico código. He intentado solucionarlo con un Select Case. Los primeros 2 casos de enviar un Integer a at1986 pero en la tercera se envía un Doubleasí los 2 métodos en la Teslastock clase con diferentes firmas.

Tal vez sus problemas desaparecerán con estas correcciones.

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

En otros idiomas

Esta página está en otros idiomas

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