-1

所以对于这个 C# 类,我必须让用户在控制台中输入一个 7 位数的电话号码。每个数字都存储为不同的字符。然后将每个字符更改为一个字母。数字更改为的字母背后没有逻辑。(我真的不明白这个作业的意义,这可能会影响我的编码器。)这是作业的内容。

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

编码方法:

  • Main():声明七个字符变量,并通过引用将它们传递给以下方法:
    • ProcessInput():获取用户输入并执行转换
      • ShowResults():显示结果
        • GetInput():从用户那里获取七个字符并将它们存储到 Main() 通过引用传递的七个变量中。
        • ProcessInput():为每个调用 ToDigit(),通过引用传递每个字符变量,并按值将这些代码之一返回到 Main():o 如果没有输入错误,则为 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 语句定义这些字符?

4

5 回答 5

1

如果课堂上没有涉及到字典课程,请不要使用它,因为这个作业将使用你在课堂上学到的工具来解决,你可能会在作业中得到一个糟糕的成绩。

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

  1. 为一个人可以输入的每个字母或数字做一个switch声明。case如果你为字母表中的每个字母做一个并输入它对应的数字,这可能会让你的成绩很差,但是如果你使用case诸如“失败”之类的陈述的一些特征(没有链接,我把它留给你研究那是什么)你可能会得到一个好成绩。

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


我将为您提供如何单独获取每个字母的答案,因为我认为这不是本课的目的,最简单的方法是使用 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;
}

另外一个免费的,在将字符串输入 foreach 之前对字符串执行ToUpperInvariant() ,您只需要检查大写字母。

于 2012-08-07T01:06:37.767 回答
0

由于这是家庭作业,因此您应该执行以下步骤:

  1. 创建对应于电话键盘的字母到数字的映射
  2. 循环遍历输入字符串的每个字符:
    1. 如果它是一个数字(整数),则在字母>数字映射中查找它,打印字符。
    2. 如果是字母,则查找同一张表,并打印相应的数字。
    3. 如果它不符合这两个条件,则打印一条错误消息。
于 2012-08-07T00:53:32.807 回答
0

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

于 2012-08-07T00:56:50.897 回答
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"
于 2012-08-07T01:04:45.143 回答
0

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

于 2012-08-16T02:07:47.757 回答