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



因此,对于这个C#类,我必须让用户在控制台中输入一个7位数的电话号码。每个数字都存储为不同的字符。然后,每个字符都被更改为一个字母。数字被改成的字母背后没有逻辑。(我真的不明白这项任务的意义,这可能会导致我的编码器阻塞。)以下是任务的内容。

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

编码方法:

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

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

基本上,2 s A、B、C3是D、E、FEtc,然后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();

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

不要使用Dictionary类,如果它没有在课堂上涵盖,你可能会在作业中得到不好的分数,因为这个作业要用你在课堂上学到的工具来解决。

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

  1. 为一个人可以输入的每个字母或数字做一个switch语句。如果你为字母表中的每个字母做一个case,并输入它对应的数字,这可能会给你带来不好的分数,但如果你使用case语句的一些特征,比如"失败"(没有链接,我让你来研究它是什么),你可能会得到好的分数。

  2. 这也可以用if语句来完成,就像第1点一样,如果你为每个条目做一个if,你会得到一个糟糕的分数,但如果你能想出如何用一个if来解决A, B, C, and 1,你可能会得到好分数。


我会给你答案,告诉你如何单独获得每封信,因为我不认为这是本课的目的,最简单的方法是用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. 根据电话键盘创建字母到数字的映射
  2. 循环输入字符串的每个字符:
    1. 如果是数字(整数),则在字母>数字映射中查找,打印字符
    2. 如果是字母,则查找同一表格,并打印相应的数字
    3. 如果与这两个条件不匹配,则打印一条错误消息

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

这应该能在中工作

        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"

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

最新更新