You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# 基于二维数组实现姓名地址存储与查询功能的问题咨询

问题根因

现有代码的核心问题有两个:

  • HashSet仅能实现姓名重复校验,没有存储姓名和对应地址的关联关系,无法定位到目标地址在二维数组中的下标
  • 搜索逻辑直接写死了input[1, 1],永远返回第二组录入的地址,和用户输入的检索姓名无关联,自然不会返回正确结果
最优修正方案

推荐直接用Dictionary<string, string>实现,天然支持唯一键校验+键值关联,不需要额外维护二维数组和HashSet两套存储,代码更简洁易维护:

// 初始化字典,设置大小写不敏感的姓名匹配规则
Dictionary<string, string> addressBook = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);

// 录入5组数据
for (int i = 0; i < 5; i++)
{
    while (true)
    {
        Console.Write($"Name {i + 1} : ");
        string name = Console.ReadLine().Trim();
        // 校验姓名是否已存在
        if (addressBook.ContainsKey(name))
        {
            Console.WriteLine("Name is already added! please input a different name");
            continue;
        }
        Console.Write($"Address {i + 1} : ");
        string address = Console.ReadLine().Trim();
        addressBook.Add(name, address);
        break;
    }
}

// 检索逻辑
while (true)
{
    Console.Write("\n==> Search Name : ");
    string searchName = Console.ReadLine().Trim();
    if (addressBook.TryGetValue(searchName, out string matchedAddress))
    {
        Console.WriteLine($"Address : {matchedAddress}");
    }
    else
    {
        Console.WriteLine("Name cannot be found!");
    }
}
保留原有二维数组实现的修改方案

如果不想改动原有存储结构,只需修改检索部分的逻辑,遍历二维数组匹配姓名即可:

while(true)
{
    Console.Write("\n==> Search Name : ");
    string nameSearch = Console.ReadLine();
    bool isFound = false;
    // 遍历数组找匹配的姓名
    for (int i = 0; i < input.GetLength(0); i++)
    {
        if (string.Equals(input[i, 0], nameSearch, StringComparison.OrdinalIgnoreCase))
        {
            Console.WriteLine($"Address : {input[i, 1]}");
            isFound = true;
            break;
        }
    }
    if (!isFound)
    {
        Console.WriteLine("Name cannot be found!");
    }
}

内容的提问来源于stack exchange,提问作者krazyne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:54:01