Bei einem Array eine bestimmte Zahl durch 0 ersetzen

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von exc-jdbi.

    Bei einem Array eine bestimmte Zahl durch 0 ersetzen

    Hey :) also ich hab folgendes Problem und zwar hab ich eine Liste erstellt mit 10 random Zahlen zwischen 0 und 100. so jetzt sollen die ausgewählten Zahlen, wenn sie durch 3 teilbar sind, durch 0 ersetzt werden. Aber ich weiß jetzt nicht wie man das mit der Liste und den Array schreibt :S also bis jetzt hab ich Folgendes:

    Quellcode

    1. Private Sub cmd4_Click(sender As System.Object, e As System.EventArgs) Handles cmd4.Click
    2. For i As Integer = 0 To 9
    3. If feld(i) Mod 3 Then
    4. lstArray.Items.Replace("0") 'also das hier funktioniert nämlich nicht :S und ich weiß nicht wie ich das sonst machen könnte :/
    5. End If
    6. Next i
    7. End Sub



    Naja also das mit dem 0 ersetzten weiß ich halt nicht bzw. wie man das programmiert :/ wäre cool wenn mir jemand den Befehl nennen könnte :D und ist das mit dem Mod 3 eigentlich auch ok? Ach ja das feld(i) ist halt der Inhalt meiner Listbox ^^
    Also einem Array kannst du an einer Position so einen Wert zu weisen:

    VB.NET-Quellcode

    1. ​Dim ArrayName() As Typ
    2. ArrayName(Position als Integer) = Wert als oben angegebenen Typ


    Das mit dem Mod-Operator geht denke Ich klar.

    Beachte jedoch bitte: Option Strict On! (siehe home.arcor.de/eckardahlers/Pro…/Blogs/WarumStrictOn.html)

    LG :)
    Zunächst packe deinen Code nächstens bitte in einen vbnet-tag der dir in der Toolbox angeboten wird.
    Durch 3 teilbar ist jede Zahl. Du meinst wohl eher vollständig, also eine Ganzzahldivision.
    Der Modulo-Operator spuckt den Rest einer solchen Division aus, den du in deiner Abfrage gar nicht abfragst.
    Man sieht auch direkt, dass du nicht Option Strict On programmierst, da Modulo wie schon gesagt einen Rest zurückgibt.
    Der wird dann spontan in einen Boolean umgewandelt.
    Eine Zahl ist durch 3 "teilbar", wenn zahl Mod 3 = 0. Durch den cast auf bool, würde 0 als false wahrgenommen werden und
    alles andere dann wohl als true, wenn man das so sagen kann.
    Demnach wäre wenn schon das richtig:

    VB.NET-Quellcode

    1. If Not CBool(feld(i) Mod 3) Then


    Oder gleich logisch:

    VB.NET-Quellcode

    1. If feld(i) Mod 3 = 0 Then


    Ich weiß ich bin pingelig, aber Variablenamen wie "feld" für einen Array, wäre so als ob ich jeden String "Zeichenkette" benennen würde und jeden Integer "Ganzzahl".

    Den Wert des Arrays kannst du setzen wie dir das @ichduersie vorgeschlagen hat.
    Was mich viel mehr irritiert ist, dass du in ner Liste was replacen willst, dein "feld"-Array aber auf die Teilbarkeit überprüfst.
    Wenn in "feld" deine Zufallswerte drinstehen kannst du das so machen:

    VB.NET-Quellcode

    1. For i = 0 To feld.Length - 1
    2. If feld(i) Mod 3 = 0 Then feld(i) = 0
    3. Next


    MfG Tim

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

    Guten Tag Charliestern

    Was ist das für eine Liste die 10 Random-Werte hat? Eine List(of integer) vielleicht? Wenn ja, dann geh doch mit dieser Liste in eine For oder For Each - Schlaufe.
    Ansonsten empfehle ich dir ein bisschen mehr Code uns zu zeigen.

    Freundliche Grüsse

    exc-jdbi

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „exc-jdbi“ ()