将电话号码转换为字母(C#)

时间:2012-08-07 00:48:58

标签: c# phone-number

因此,对于这个C#类,我必须让用户在控制台中输入一个7位数的电话号码。每个号码都存储为不同的字符。然后将每个字符更改为一个字母。数字改变后的字母背后没有逻辑。 (我真的没有看到这个任务的重点,这可能是我的编码器阻塞的原因。)这就是作业所说的内容。

您的任务:预付费电话服务需要一个程序,将字母数字键盘输入转换为电话号码。用户将输入八个字符,程序将输出错误消息或翻译的七位数电话号码。输入可以包含数字,字母或两者。字母可以是大写或小写。

编码方法:

  • Main():声明七个字符变量,并通过引用将它们传递给以下方法:
    • ProcessInput():获取用户输入并执行转换
      • ShowResults():显示结果
        • GetInput():从用户获取七个字符并将它们存储到Main()通过引用传递的七个变量中。
        • ProcessInput():为每个调用ToDigit(),通过引用传递每个字符变量,并按值返回其中一个代码到Main(): 如果没有输入错误,则为0 o -1如果输入错误“

程序将按标准电话键盘布局执行转换。

基本上,2 s A,B,C 3是D,E,F 等等然后D,E,F是3,依此类推。

现在除了输入之外我什么都没做,但是它不是作为字符存储的,只是一个字符串。我真的很讨厌这个任务,因为我们只使用Cases和If语句做了两个作业,这对我来说似乎是多余的。

Console.WriteLine("Write a Phone Number that consists of Seven Numbers.");
string Number = Console.ReadLine();

if (Number.Length != 7)
    Console.WriteLine("You have entered a phone number that is too long.");

Console.WriteLine("You have entered: {0}", Number);
Console.ReadLine();

所以我真正的问题是:如何将输入数字存储为字符,然后使用case语句定义这些字符?

5 个答案:

答案 0 :(得分:1)

如果没有在课堂上讨论过,请不要使用Dictionary课程,你可能会在作业中获得不好的成绩,因为这个作业要用你在课堂上学到的工具来解决。

有两种方法可以解决这个问题。

  1. 为一个人可以输入的每个字母或数字制作一个switch声明。如果您为字母表中的每个字母设置case并输入相应的数字,这可能会给您带来不好的成绩,但如果您使用case语句的某些功能,例如“跌穿”(没有联系,我留给你研究那是什么)你可能会得到一个好成绩。

  2. 这也可以使用if语句来完成,就像第1点一样,如果你为每个条目设置一个if,你会得到一个不好的成绩,但是如果你能弄明白的话如何用一个A, B, C, and 1来解决if你可能会得到一个好成绩。


  3. 我会给你如何单独收到每封信的答案,因为我不认为这是课程的愚蠢,最简单的方法是用foreach声明来做。

    string finalNumber = "";
    foreach(char digit in Number)
    {
      finalNumber += ProcessDigit(digit);
    }
    Console.WriteLine(finalNumber);
    
    //Elsewhere
    char ProcessDigit(char digit)
    {
         char newDigit;
    
         //change digit to whatever you needed to turn it in to and store it in newDigit;
    
         return newDigit;
    }
    

    另一个freebee,在你把它送到foreach之前在字符串上做ToUpperInvariant(),你只需要检查大写字母。

答案 1 :(得分:0)

由于这是作业,你应该做的一些步骤:

  1. 根据电话上的小键盘
  2. 创建一个字母地图
  3. 遍历输入字符串的每个字符:
    1. 如果是一个数字(整数),那么请在字母>中查找数字映射,打印字符。
    2. 如果是一个字母,则查找同一张表,并打印相应的数字。
    3. 如果不符合这两个条件,请打印错误信息。

答案 2 :(得分:0)

您可以创建一个字典,将所有可能的输入字符映射到您想要的输出。输入后,您可以根据字典替换字符。

答案 3 :(得分:0)

这应该有效

        Dictionary<string, int> dict = new Dictionary<string, int>();
        dict.Add("ABC", 2);
        dict.Add("CDE", 3);
        dict.Add("FGH", 4);
        dict.Add("JKL", 5);

        string Numbers = "BDJ";
        string myints = "";
        foreach (char c in Numbers)
            myints += dict.FirstOrDefault(X => X.Key.Contains(c)).Value.ToString();
//the output : "235"

答案 4 :(得分:0)

真的很抱歉没有回复此问题或选择正确的答案,我最终自己想出来了。我遇到这么多麻烦的原因是因为我认为我想为1(800)384-2347创建几个输出并将最后4个数字转换成可能有意义的各种字母。但这只是一个简单的案例陈述。