2012-08-07 23 views
-1

因此,对于此C#类,我必须让用户在控制台中输入一个7位数的电话号码。每个号码都存储为不同的字符。然后每个字符都变成一个字母。数字改变后的字母没有逻辑。 (我真的没有看到这个任务的重点,这可能会对我的编码器块造成影响。)这是任务说的。将电话号码转换为字母(C#)

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

  • 的Main():编码的

    方法声明7个字符变量,并传递这些通过引用以下方法:

    • ProcessInput():获取用户输入并执行转换
      • ShowResults():显示结果
        • GetInput():从用户处获取七个字符并将它们存储到七个变量中Main()已通过参考。 ProcessInput():为每个变量调用ToDigit(),通过引用传递每个字符变量,并将这些代码中的一个返回给Main(),值为: o 0如果没有输入错误 o -1如果有输入错误”

程序将执行每一个标准电话小键盘布局的转换。

基本上,2秒A,B ,C 3是D,E,F 等,然后D,E,F等于3等等。

现在我除了输入外没有做任何事情,但它没有存储为字符,只是一个字符串。我真的很讨厌这个任务,因为我们只是用Case和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语句定义这些字符?

+0

那么你的问题是什么?顺便说一句,请标记您的问题'homework' – 2012-08-07 00:51:23

+0

如何存储输入数字作为一个字符,然后用case语句来定义这些字符? – user1580598 2012-08-07 00:52:09

+0

您可以使用[String.ToCharArray(http://msdn.microsoft.com/en-us/library/ezftk57x.aspx)方法来创建你的字符数组 – 2012-08-07 00:57:08

回答

0

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

0

因为这是家庭作业,你应该做一些步骤:

  1. 创建的字母地图以数字作为对应于电话
  2. 循环遍历输入的字符串中的每个字符键盘:
    1. 如果它的数字(一个整数),然后在字母>数字映射中查找它,打印字符。
    2. 如果它的一个字母,然后查找同一张表,并打印相应的数字。
    3. 如果它不符合这两个条件,则会打印一条错误消息。
+0

但是,如何映射字母和数字? 壳体= 2 壳体= 'A' 壳体= 'B' 壳体= 'C' 结果= '2' – user1580598 2012-08-07 00:56:51

+0

参见['Dictionary'](HTTP文档://www.dotnetperls。com/dictionary) – 2012-08-07 00:57:45

+0

因为他们刚刚学过IF和CASE语句,所以他可能不会使用字典,而是上面提到的工具之一。 – 2012-08-07 01:00:02

0

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

+0

因为他们刚刚学会了IF和CASE语句,所以他可能不会使用字典,而是上面提到的工具之一。 – 2012-08-07 00:58:05

+0

是的,代码假设是由If和Case语句组成的。 :/ – user1580598 2012-08-07 01:00:11

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" 
1

不要使用字典类,如果它没有被涵盖在课堂上,你可能会得到分配差了一个档次,因为这作业是使用工具,你可以解决在课堂上学习。

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

  1. 让每一个字母或数字的人可能会进入一个switch声明。如果您为字母表中的每个字母输入一个case并输入相应的数字,这可能会让您的成绩很差,但是如果您使用case的某些功能,如“fall through”(无链接,我将它留给您研究这是什么),你可能会得到一个好成绩。

  2. 这也可以用if报表做的,就像1点,如果你让每一个进入你会得到一个坏的A级if,但如果你能弄清楚如何与一个if解决A, B, C, and 1你可能取得好成绩。


我会给你如何单独获得每个字母,因为我不认为这是教训的purpous答案,easist方式是用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; 
} 

也是另一个奉送,对字符串做ToUpperInvariant()你到的foreach给它之前,你只需要检查大写字母。

+0

那么我怎样才能让输入的数字能够在switch/if语句中运行呢? – user1580598 2012-08-07 01:12:13

+0

更新了答案,因为我不认为这是您所描述的作业的意图,而是在'foreach'语句中测试您。 – 2012-08-07 01:14:31

+0

我不认为我们可以使用foreach语句:'[ – user1580598 2012-08-07 01:15:33

相关问题