2016-06-07 42 views
-4

我有写家庭作业的程序是使电话簿。C# - 简单的电话簿功课

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

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

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 。

+0

无论线27,在运行时你试图将元素添加到已经包含给定键的元素的字典。正如错误告诉你的那样,你不能那样做。这是一个很好的机会,可以逐步调试调试器中的代码,并确定实际发生的情况以及为什么您认为它应该不同。 – David

+1

简单的谷歌搜索返回多个重复。 – Sayse

+1

那个非常具有描述性的错误信息,你不理解吗? – Jamiec

回答

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]关键。