Laden...

Zahlen nach Grösse sortieren und in Textbox ausgeben?

Erstellt von Darkblue94 vor 4 Jahren Letzter Beitrag vor 4 Jahren 2.840 Views
D
Darkblue94 Themenstarter:in
4 Beiträge seit 2019
vor 4 Jahren
Zahlen nach Grösse sortieren und in Textbox ausgeben?

Hallo Leute,
habe eine kurze Frage. Es geht im die Aufgabe, dass 3 Zahlen eingegeben werden und dann nach Größe sortiert werden sollen. Habe mich im Internet schlau gemacht und viel zum Thema Array.Sort() gefunden.

Habe das Programm nun so geschrieben:

 
            int[] zahlen;
            zahlen = new int[3];
            zahlen[0] = Convert.ToInt32(textBox1.Text);
            zahlen[1] = Convert.ToInt32(textBox2.Text);
            zahlen[2] = Convert.ToInt32(textBox3.Text);

             Array.Sort(zahlen);

Nun soll die Auflistung in der TextBox4 erscheinen aber ich kann die Auflistung leider nicht in String konvertieren.

Ich wäre euch sehr dankbar, wenn ihr mit weiterhelfen könntet.

Liebe Grüße

16.834 Beiträge seit 2008
vor 4 Jahren

Was is die Frage, wo kommst Du nicht weiter?
Doku von Sort() angeschaut? Die ist sehr ausführlich mit Code-Beispielen.

Wir werden natürlich nicht die Hausaufgaben machen und Dir einfach so den Quellcode programmieren.
Du sollst ja selbst überlegen und lernen 😃

D
Darkblue94 Themenstarter:in
4 Beiträge seit 2019
vor 4 Jahren

Danke für die schnelle Antwort. Wo finde ich diese Doku?

Die Frage ist:, mein Gedanke war folgender:

textBox4.Text = Convert.ToString(Array.Sort(zahlen));

dies gibt leider eine Fehlermeldung aus.

Laut Internet listet der Befehl "Array.Sort()" die Zahlen automatisch nach Größe auf, aber wie bekomme ich das Programm dazu, diese Auflistung in meiner TextBox4 anzuzeigen.

16.834 Beiträge seit 2008
vor 4 Jahren

Wo finde ich diese Doku?

Über Google - oder einfach auf den Link klicken.
Prinzipiell verwendest Du es aber richtig. Das ToString auf ein Array aber macht natürlich kein Sinn.
Das sollte eher ein string.Join() sein, wenn ich Dein Ziel richtig verstehe.

dies gibt leider eine Fehlermeldung aus.

Und welche? Wir können nicht hellsehen.
[Hinweis] Wie poste ich richtig? Punkt 5

Vermutlich liegts an der Fehlermeldung.

6.911 Beiträge seit 2009
vor 4 Jahren

Hallo Darkblue94,


textBox4.Text = $"{zahlen[0]} {zahlen[1]} {zahlen[2]}";

Ist naiv umgesetzt, auch dein Code schon. Denn bedenke dass es einen Laufzeitfehler gibt, falls in textBox1.Text keine Zahl, sondern sonst ein Text steht. Besser ist die Verwendung von int.TryParse (cf. How to: Convert a String to a Number).

Wenn dann allgemein aus einem Array eine Zeichenfolge erstellt werden soll, kann bei wenigen fixen Array-Elemente wie oben gezeigt vorgegangen werden. Bei wenigen (~ weniger als 10) und nicht fixen Array-Elemente z.B. so


string result = "";

foreach (int i in array)
    result += i.ToString() + " ";

Wegen [FAQ] Besonderheiten der String-Klasse (immutabler Referenztyp mit Wertsemantik) sollte bei meheren Array-Elemente z.B. der StringBuilder verwendet werden.


var stringBuilder = new StringBuilder();

foreach (int i in array)
    sb.Append(i).Append(" ");

string result = stringBuilder.ToString();

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

D
Darkblue94 Themenstarter:in
4 Beiträge seit 2019
vor 4 Jahren

Der Fehler ist:

"1-Argument: Kann nicht von "void" in "string" konvertiert werden."

LG

6.911 Beiträge seit 2009
vor 4 Jahren

Hallo Darkblue94,

Array.Sort ist eine void-Methode, daher lässt sich das nicht kompilieren.
Siehe aber oben und lies dir den verlinkten Thread durch.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

16.834 Beiträge seit 2008
vor 4 Jahren

.. weil Array.Sort() eben keine Rückgabe hat.

Doku Signatur:

public static void Sort (Array array);

Sort() sortiert das übergebene Array.
So stehts auch in der Beschreibung 😃

5.658 Beiträge seit 2006
vor 4 Jahren

Weeks of programming can save you hours of planning

S
25 Beiträge seit 2014
vor 4 Jahren

Du verstehst anscheind nicht so ganz wie das mit einem Array funktioniert. Ich hab mal dein Array mit den Indizes skizziert, damit du ein besseres verständnis bekommst.

Also ein Array ist eine Datensammlung eines bestimmten Datentyps, in deinem Fall vom Typ int. So das heisst du speichert mehrere ganz Zahlen in diesem Array. Dabei ist jede Zahl einem Index zu geordnet. Der erste Index eines Array ist die 0. Als Beispiel nehmen wir an, du gibst die folgenden Zahlen in deine Textboxen ein: |8 | 3 | 5|. Dann hat die 8 den Index 0 und die 5 hat den Index 2. Führst du nun einen sort aus, werden die Elemente neu geordnet und bekommen somit einen neunen Index. Das Array sieht dann so aus |3|5|8|. Das heisst bei Index 0 findest du jetzt das Element mit dem Wert 3. So jetzt möchtest du das komplette Array in einer weiteren Textbox ausgeben. Um dies zu realisieren, musst du das Array einmal "durchlaufen" und in jedem Lauf das Element auslesen. Das Array durchläufst du in einer Schleife bsp. For-Schleife

 for (int i = 0; i < Array.Length; i++)
{
	mystring + Array[i].toString() + " ";
}

nachdem die Schleife durch gearbeitet ist hast du mystring mit allen Elementen des Arrays. Ich hoffe ich konnte dir dadurch dir verständlich machen wie du mit Arrays arbeitest.

Wie auch meine Vorredner schon angemerkt haben musst du aber drauf aufpassen, das du keine Char in einen Integer parst, da sonst runtime error gibt. Aber das wurde schon erklärt, wie du das abfängst