Menu
Coddy logo textTech

Accessing Values

Teil des Abschnitts Logik & Ablauf der C#-Journey von Coddy — Lektion 49 von 66.

In C# verwendet man Dictionary<TKey, TValue> als Äquivalent zu HashMap. Nach dem Hinzufügen von Elementen zu einem Dictionary müssen Sie diese abrufen.

Erstellen Sie ein Dictionary mit string-Schlüsseln und int-Werten:

Dictionary<string, int> studentScores = new Dictionary<string, int>();

Fügen Sie einige Einträge hinzu:

studentScores.Add("John", 95);
studentScores.Add("Mary", 88);

Zugriff auf einen Wert über einen Schlüssel:

int johnScore = studentScores["John"];

Nach der Ausführung des obigen Codes enthält johnScore:

95

Vorsicht! Wenn Sie versuchen, auf einen Schlüssel zuzugreifen, der nicht existiert, erhalten Sie eine KeyNotFoundException:

// Dies wird eine Ausnahme werfen, wenn "Bob" nicht im Wörterbuch ist
int bobScore = studentScores["Bob"];
challenge icon

Aufgabe

Einfach

Erstellen Sie eine Methode namens GetValueByKey, die zwei Argumente annimmt:

  1. Ein Dictionary<string, int> (Wörterbuch).
  2. Eine string (Schlüssel) zum Nachschlagen.

Die Methode sollte versuchen, den Wert für den angegebenen Schlüssel abzurufen und:

  • Wenn der Schlüssel existiert, drucken Sie den Wert aus.
  • Wenn der Schlüssel nicht existiert, drucken Sie "Key not found" aus.

Spickzettel

Erstellen Sie ein Dictionary mit string-Schlüsseln und int-Werten:

Dictionary<string, int> studentScores = new Dictionary<string, int>();

Fügen Sie Einträge zum Dictionary hinzu:

studentScores.Add("John", 95);
studentScores.Add("Mary", 88);

Greifen Sie auf einen Wert mit einem Schlüssel zu:

int johnScore = studentScores["John"];

Das Zugriff auf einen nicht existierenden Schlüssel wirft eine KeyNotFoundException:

// Dies wird eine Ausnahme werfen, wenn "Bob" nicht im Dictionary ist
int bobScore = studentScores["Bob"];

Probier es selbst

using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;

class Program
{
    public static void GetValueByKey(Dictionary<string, int> dictionary, string key)
    {
        // Schreibe den Code hier
    }
    
    static void Main(string[] args)
    {
        // Lese ein Dictionary im JSON-Format ein: {"key1":value1,"key2":value2}
        string dictionaryInput = Console.ReadLine();
        string key = Console.ReadLine();
        
        Dictionary<string, int> dictionary = new Dictionary<string, int>();
        
        // Parse die Eingabezeichenfolge, um ein Dictionary zu erstellen
        if (!string.IsNullOrEmpty(dictionaryInput))
        {
            try
            {
                // Überprüfe, ob die Eingabe im JSON-Format ist
                if (dictionaryInput.StartsWith("{") && dictionaryInput.EndsWith("}"))
                {
                    // Entferne die geschweiften Klammern
                    string jsonContent = dictionaryInput.Substring(1, dictionaryInput.Length - 2);
                    
                    // Teile durch Kommas, die nicht in Anführungszeichen stehen
                    string pattern = @",(?=(?:[^""]*""[^""]*"")*[^""]*$)";
                    string[] entries = Regex.Split(jsonContent, pattern);
                    
                    foreach (string entry in entries)
                    {
                        // Extrahiere Schlüssel und Wert mit Regex
                        Match match = Regex.Match(entry, @"""([^""]+)""\s*:\s*(\d+)");
                        if (match.Success)
                        {
                            string keyMatch = match.Groups[1].Value;
                            int valueMatch = int.Parse(match.Groups[2].Value);
                            dictionary.Add(keyMatch, valueMatch);
                        }
                    }
                }
                // Handle the original format "key1:value1,key2:value2" as fallback
                else
                {
                    string[] pairs = dictionaryInput.Split(',');
                    foreach (string pair in pairs)
                    {
                        string[] keyValue = pair.Split(':');
                        if (keyValue.Length == 2)
                        {
                            dictionary.Add(keyValue[0], int.Parse(keyValue[1]));
                        }
                    }
                }
                
                GetValueByKey(dictionary, key);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error parsing input: {ex.Message}");
            }
        }
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf