c# - 简单的电话簿作业

时间:2016-06-07 15:01:15

标签: c#

我必须为家庭作业写的一个程序是制作电话簿。

  

编写一个程序,从控制台接收有关人员及其电话号码的一些信息。   您可以自由选择输入数据的方式;每个条目应该只有一个名称和一个数字(两个都是字符串)。如果您收到电话簿中已存在的名称,只需更新其号码即可。   在填写这个简单的电话簿后,在收到命令“搜索”和命令“停止”后,您的程序应该能够按姓名搜索联系人并以“{name} - > {number”格式打印她的详细信息}”。如果未找到联系人,请打印“联系人{名称}不存在。”

到目前为止,这是我的代码:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


class Phonebook
{
    static void Main()
    {
        string[] input = new string[100];
        input[1] = string.Empty;
        var dict = new Dictionary<string, string>();
        while (input[0] != "search")
        {
            input = Console.ReadLine().Split('-');
            for (int i = 0; i < input.Length; i++)
            {
                if (dict.ContainsKey(input[i]))
                {
                    dict.Remove(input[i]);
                }
            dict.Add(input[0],input[1]);
            }
        }
        while (input[0] != "stop")
        {
            input = Console.ReadLine().Split();
        }
        for (int i = 0; i < input.Length - 1; i++)
        {
            foreach (KeyValuePair<string, string> c in dict)
            {
                if (input[i] == c.Key)
                {
                    Console.WriteLine("{0} -> {1}", c.Key, c.Value);
                }
                else
                {
                    Console.WriteLine("Contact {0} does not exist.", c.Key);
                }
            }
        }
    }
}

我在控制台中输入一对后,我在第27行得到了这个:

  

未处理的异常:System.ArgumentException:具有相同键的项目具有alr   已经添加了。

1 个答案:

答案 0 :(得分:0)

这是问题

while (input[0] != "search")
        {
            input = Console.ReadLine().Split('-');
            for (int i = 0; i < input.Length; i++)
            {
                if (dict.ContainsKey(input[i]))
                {
                    dict.Remove(input[i]);
                }
            dict.Add(input[0],input[1]);
            }
        }

您删除input[i]密钥并尝试添加input[0]密钥。