Entwickler-Ecke

Basistechnologien - Mit Textdatei eine Rangliste erstellen (C#)


lillyextra26@gmail.com - Mi 01.03.23 20:02
Titel: Mit Textdatei eine Rangliste erstellen (C#)
Guten Abend liebe Gemeinde,

ich bin relativ neu bei C#.
In den letzten Tagen habe ich per Konsole ein ZahlenRaten-Spiel gemacht.
Die Versuche wurden gezählt und gemeinsam mit den Namen an eine .txt-Datei übergeben.
Sieht in der Datei so aus:

Datei
1:
2:
3:
4:
5:
6:
Heike 2
Luna 2
Bernd 4
Ilona 15
Jenny 8
Heiko 13

Nun würde ich gerne eine Art Rangliste machen. Jedoch bin ich zu blöd um einen gescheiten Weg dahin zu finden.
Das einzigste, was ich hin bekomme, ist die komplette Datei auszulesen oder die erste Spalte.
Könntet ihr mit bitte ein paar Hilfen zur Hand geben?

Lg

Moderiert von user profile iconTh69: Code-Tags hinzugefügt
Moderiert von user profile iconTh69: Topic aus C# - Die Sprache verschoben am Do 02.03.2023 um 09:15


Ralf Jansen - Mi 01.03.23 20:35

Es hilft ein Dateiformat zu wählen das möglichst einfach zu lesen und zu schreiben ist. Und dein Format ist nur vordergründig einfach in der Art das es einfach aussieht.
Ich meine mit einfach ein Format das einfach aus einer Datenstruktur in eine Datei geschrieben und wieder gelesen werden kann. Da ist man ganz schnell bei Dingen die da JSON oder XML heißen und bei denen es Sprach/Framework-Unterstützung gibt die aus einer Datenstruktur in ein File zu schreiben bzw. zu lesen gibt(Ein Serializer).

Beispiel: Sollte ich damit deinen Wissenstand weit verfehlen und nur Fragezeichen auslösen zeig am besten deinen Code und wir versuchen dann von da das in eine passende Richtung zu lenken

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
    public class Program
    {
        static void Main(string[] args)
        {
            // unsortierte Ausgangsliste
            List<Player> players = new List<Player>()
            {
                new() { Name = "Heike", Try = 2 },
                new() { Name = "Luna", Try = 2 },
                new() { Name = "Bernd", Try = 4 },
                new() { Name = "Ilona", Try = 15 },
                new() { Name = "Jenny", Try =  8 },
                new() { Name = "Heiko", Try =  8 },
            };

            // in file schreiben
            var fileContentToBeWritten = JsonSerializer.Serialize(players);
            File.WriteAllText("C:/test/players.json", fileContentToBeWritten);

            // aus file lesen
            var fileContentRead = File.ReadAllText("C:/test/players.json");
            players = JsonSerializer.Deserialize<List<Player>>(fileContentRead);

            // sortieren und ausgeben
            var sortedplayers = players.OrderBy(x => x.Try).ToList();

            Console.WriteLine("Rangliste");
            foreach (var player in sortedplayers)
                Console.WriteLine($"{player.Name}   {player.Try}");
        }
    }

    public class Player
    {
        public string Name { get; set; }
        public int Try { get; set; }
    }



Ergebnis
1:
2:
3:
4:
5:
6:
7:
Rangliste
Heike   2
Luna   2
Bernd   4
Jenny   8
Heiko   8
Ilona   15


Edited: Hab zuerst missverstanden wofür die Zahl steht.