将字母映射到数字C#

时间:2015-09-06 12:05:28

标签: c#

我正在尝试编写一个简单的程序,将字母映射到它们的等效数字,就像你在手机键盘上得到的一样。例如aghk = 2445.我似乎无法让程序正常工作。我到目前为止的内容如下。我正在使用MVC(模型视图控制器)模式。我得到的问题是,如果我输入一个字母,它将给出正确的数字,但是一旦我输入多个数字,就不会出现输出。如果你有任何关于如何解决这个问题的帮助,我们将不胜感激。

namespace MapKeyPad
{
    class Model
    {
        public String ReadKey(String usrInput)
        {
            usrInput = usrInput.ToLower();
            int Len = usrInput.Length;
            int i = 0;

            if (usrInput == "a" || usrInput == "b" || usrInput == "c")
            {
                Console.Write("1");
            }

            else if (usrInput == "d" || usrInput == "e" || usrInput == "f")
            {
                Console.Write("2");
            }

            else if (usrInput == "g" || usrInput == "h" || usrInput == "i")
            {
                Console.Write("3");
            }

            return "";
        }
    }
}

3 个答案:

答案 0 :(得分:4)

  

我得到的问题是,如果我输入一个字母就会给出   正确的数字,但一旦我输入多个数字没有   输出出现。

这是因为你的比较逻辑。见这里:

        if (usrInput == "a" || usrInput == "b" || usrInput == "c")

您正在将整个字符串与单个字母进行比较,并说" a"。 你需要这样的东西:

foreach (char c in usrInput)
{
      if (c == 'a' || c == 'b' || c == 'c')
      {
       Console.Write("1");
      } // etc. do other comparisons similarly
      ...
} 

答案 1 :(得分:1)

尝试这样的事情:

UTC

答案 2 :(得分:0)

@giorgi答案描述得非常好,但是如果你想写一个通用代码,那么你可以考虑使用每个被输入字符的ASCII值并减去96(一个'的ASCII值是97)这将给你来自az的所有小写字母的值。同样也要写出大写字母的逻辑