我正在尝试编写一个简单的程序,将字母映射到它们的等效数字,就像你在手机键盘上得到的一样。例如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 "";
}
}
}
答案 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的所有小写字母的值。同样也要写出大写字母的逻辑