将字母映射到数字C#

将字母映射到数字C#,c#,C#,我正试图编写一个简单的程序,将字母映射到它们的等效数字,就像你在手机键盘上看到的那样。例如,aghk=2445。我似乎无法使程序正常工作。到目前为止,我所了解的情况如下。我使用的是MVC(模型-视图-控制器)模式。我遇到的问题是,如果我输入一个字母,它将给出正确的数字,但只要我输入多个数字,就不会显示输出。如果您能在如何解决这个问题上给我任何帮助,我将不胜感激 namespace MapKeyPad { class Model { public String Re

我正试图编写一个简单的程序,将字母映射到它们的等效数字,就像你在手机键盘上看到的那样。例如,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 "";
        }
    }
}
我遇到的问题是,如果我输入一个字母,它将给出 正确的数字,但只要我输入一个以上的数字 显示输出

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

        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
      ...
} 
    var usrInput = usrInput.ToLower();
    foreach(var letter in usrInput)
    {
       if (letter == 'a' || letter == 'b' || letter == 'c')
       {
           Console.Write("1");
       }

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

       else if (letter == 'g' || letter == 'h' || letter == 'i')
       {
           Console.Write("3");
       }
    }
我遇到的问题是,如果我输入一个字母,它将给出 正确的数字,但只要我输入一个以上的数字 显示输出

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

        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
      ...
} 
    var usrInput = usrInput.ToLower();
    foreach(var letter in usrInput)
    {
       if (letter == 'a' || letter == 'b' || letter == 'c')
       {
           Console.Write("1");
       }

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

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

试着这样做:

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

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

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

试着这样做:

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

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

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

乔吉回答是很好的描述,但是如果你想编写一个通用代码,那么你可以考虑使用每一个被键入的字符的ASCII值并减去96(A的ASCII值是97),这将为所有来自AZ的小写字母提供U值。同样,写你的逻辑为资本案件字母,以及

< P> @乔吉的回答是很好的描述,但如果你想写一个通用的代码,那么你可以考虑使用ASCII值的每一个字符类型和减去96(A的ASCII值是97),这将给U值的所有小写字母从AZ。同样,也要为大写字母编写逻辑

您必须循环字符串并对每个字母重复该过程。或者只使用一个简单的
。选择
顺便说一句:我在这里根本看不到多少MVC模式。。。如果有一个将int映射到char的ISO标准的话,似乎一切都在一个地方。你必须循环字符串并对每个字母重复这个过程。或者只使用一个简单的
。选择
顺便说一句:我在这里根本看不到多少MVC模式。。。如果有一个将int映射到char的ISO标准,似乎所有的东西都在一个地方。