Frage bezüglich Zahlengenerator

  • VB.NET

Es gibt 51 Antworten in diesem Thema. Der letzte Beitrag () ist von TVX.

    Das behauptet doch auch keiner, Menschenskind!

    Es geht einfach nur darum, hier bittet ein "Neuling" im Grundlagen-Bereich um Hilfestellung, du wirst ihm irgendeinen überflüssigen Code vor und beharrst auchnoch auf diesem, unnötig Langem und komplexem, Code, statt ihm einfach einen unserer, einfacheren und verständlicheren Code's zu empfehlen..

    Nur weil wir dir sagen, das dein Code unveständlich und unnötig komplex ist, brauchst du dich nicht gleich in der Ehre gekränkt fühlen, Mein Gott..
    Ich habe auch mal was kleines gebastelt

    VB.NET-Quellcode

    1. Dim rnd As New Random
    2. Dim b As Boolean
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. If b = False Then
    5. Dim nbr As Integer = Rnd.Next(CInt("1"), CInt("999"))
    6. Label1.Text = CStr(nbr)
    7. End If
    8. b = True
    9. End Sub

    Habe es etwas verkürzt, ob es jedoch genau so effizient ist weiß ich nicht.
    Bitte keine VB-Fragen üb... Ach scheiß drauf, mich fragt ja eh keiner.
    @require
    Was ist denn das für ein Code???
    Warum nicht anstatt 'Cint("1")' einfach '1'?
    Du solltest einem Boolean immer einen Wert zuweisen, bevor du ihn verwendest, warum nicht gleich Static?
    Ich hab's mal etwas verkürzt und in eine Funktion gepackt:

    VB.NET-Quellcode

    1. Private Function GetNumber() As Integer
    2. Static nbr As Integer = -1
    3. If nbr = -1 Then nbr = (New Random).Next(1, 1000 + 1)
    4. Return nbr
    5. End Function

    Im Button_Click steht dann folgendes:

    VB.NET-Quellcode

    1. MessageBox.Show(GetNumber.ToString)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „nafets3646“ ()

    @require
    Ich meinte unter anderem das CInt(), außerdem ist Static einem deklarieren außerhalb der Funktion vorzuziehen, da diese Variable dann nur generiert wird, wenn sie gebraucht wird, der Boolean ist ganz nebenbei irgendwie unnötig. Zusätzlich sind nichtmal die Vorraussetzungen des TE erfüllt, die Zahl soll bei jedem Aufruf ausgegeben werden, nicht nur einmal. Sonst noch zu bemängeln:

    VB.NET-Quellcode

    1. Dim nbr As Integer = Rnd.Next(CInt("1"), CInt("999"))
    2. Label1.Text = CStr(nbr)

    Warum nicht gleich

    VB.NET-Quellcode

    1. Label1.Text = rnd.Next(...).ToString

    Und so weiter...

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „nafets3646“ ()

    VB.NET-Quellcode

    1. Dim rnd As New Random
    2. Dim b As Boolean = False
    3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. If b = False Then Label1.Text = rnd.Next(1, 999).ToString
    5. b = True
    6. End Sub

    So :P Ich weiß das es nicht die beste Lösung ist aber es funktioniert und ist kurz
    Bitte keine VB-Fragen üb... Ach scheiß drauf, mich fragt ja eh keiner.
    @require
    Nur leider ist es immer noch nicht den Anforderungen genügend, die Zahl muss immer ausgegeben werden. Außerdem wird das Form_Loas nur einmal aufgerufen, also ist der Boolean unnötig. Wenn es um die Länge geht, dann machma eben das, das kannste nicht mehr besser oder kürzer oder irgendwas machen :P:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Static nbr As Integer = (New Random).Next(1, 1000 + 1)
    3. MessageBox.Show(nbr.ToString)
    4. End Sub

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „nafets3646“ ()

    Zitat: Der Frage !
    Ich habe ein Programm was mir per Buttonklick zufällig eine Zahl generiert zwischen 1 und 10000.
    Wenn jetzt z.B. die Zahl 50 generiert wird, soll beim erneuten klicken auf den Button immer wieder die selbe
    Zahl kommen, also 50.

    Geht das irgendwie?

    JA :

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Dim rnd As New Random()
    4. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    5. If Label1.Text = "50" Then
    6. Label1.Text = "50"
    7. Else
    8. Label1.Text = CStr(rnd.Next(1, 10001))
    9. End If
    10. End Sub
    11. End Class


    Wenn das dann wieder aufhören soll brauchst de zb einen Counter und ne weitere if
    das wenn so und so offt gedrückt wurde der wert zurückgestellt wird .oder so...........


    Spoiler anzeigen

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Dim rnd As New Random()
    4. Dim zahl As Integer = 0
    5. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    6. If Label1.Text = "50" Then
    7. Label1.Text = "50"
    8. zahl += 1
    9. If zahl = 5 Then'5x wiederholen dann weiter !
    10. Label1.Text = CStr(rnd.Next(1, 10001))
    11. zahl = 0
    12. End If
    13. Else
    14. Label1.Text = CStr(rnd.Next(1, 10001))
    15. End If
    16. End Sub
    17. End Class

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „TVX“ ()