Länge der größten Zahl eines arrays ermitteln

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von kwon.

    Länge der größten Zahl eines arrays ermitteln

    Hallo,

    ich benötige etwas Hilfe...
    Ich ziehe 12 Dateien auf eine Listbox, es wird der array "array" gefüllt.
    Ich möchte aus dem array (hat 12 IntegerWerte, nämlich die Zahlen: 1,...,12) zunächst die größte Zahl ermitteln.

    Das sollte die 12 sein.

    Dann möchte ich von dieser Zahl die Anzahl der Stellen ermitteln, das wäre dann 2.

    Wenn ich die Zahlen von 1...101 hereinfüllen würde:
    Dann wäre die größte Zahl die 101,
    die Anzahl der Stellen wäre 3.

    Ich möchte die Anzahl der Stellen der größten Zahl des arrays ermitteln.

    Die Systematik soll mit allen möglichen positiven Zahlen (also auch wenn ich 10234 Werte hätte) funktionieren.

    Ich habe versucht mich an einem Beispiel von dotnetperls.com zu orientieren, aber ohne Erfolg.

    Es wird in der Messagebox die 10 (und nicht die 12) ausgegeben.

    Was muss ich tun?

    Vielen Dank für die Hilfe!!

    VB.NET-Quellcode

    1. ​Function MaxLength(DroppedFiles As String()) As Integer
    2. '###################################################### fertig ###################################################################
    3. Dim fileName As String = "", Max_Length As Integer = 0
    4. Dim n As Integer
    5. n = DroppedFiles.Count - 1
    6. Dim array(n) As Integer
    7. Dim largest As Integer = Integer.MaxValue
    8. 'array füllen
    9. i = 0
    10. For Each s In DroppedFiles
    11. fileName = Path.GetFileNameWithoutExtension(s)
    12. If IsNumeric(CInt(fileName)) Then
    13. 'Liste Zahlen ohne leading0
    14. array(i) = CInt(fileName)
    15. End If
    16. i += 1
    17. Next
    18. For Each element As Integer In array
    19. largest = Math.Max(largest, element)
    20. Next
    21. MessageBox.Show(CStr(largest.ToString.Length))
    22. 'Max_Length ist größte Länge Zahl ohne Leading0
    23. Return Max_Length
    24. End Function
    Ich verstehe Deine Aufgabenstellung nicht ganz.
    Was haben Dateinamen mit Zahlen zu tun?
    Bist Du Deinen Code mal mit Einzelschritten durchgegangen, damit Du verstehst bzw. nachvollziehen kannst, was Dein Code macht?
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    Ganz einfach array.Max().ToString().Length

    *Edit*
    Da du ja mit Dateiname hantierst kannst du auch gleich mit diesen arbeiten.

    C#-Quellcode

    1. List<string> lst = new List<string>();
    2. for(int i = 0; i <= 101; ++i)
    3. lst.Add(i.ToString());
    4. int charCount = lst.Max(x => x.Length);
    5. MessageBox.Show($"{charCount:0000}");

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

    Wenn der Dateiname die zu vergleichende Zahl ist, (und danach sieht der erste Code aus) dann ist doch
    DroppedFiles.Max(Function(x) x.Length)
    schon der Lösungswert, man braucht keine extra Funktion MaxLength.
    Bzw. wenn manche Filenamen keine Zahlen sind:
    -DroppedFiles.Min(Function(x) Integer.TryParse(x, Nothing) * x.Length)

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