【发布时间】:2015-06-03 17:53:18
【问题描述】:
就像旧手机的键盘一样。我应该输入一串数字,然后程序应该根据这些数字打印出一个文本。
例如:输入:4448 9666777557777 应输出到:ITWORKS。
到目前为止,这是我的代码,但它没有打印出任何内容。你能告诉我它有什么问题吗?我可以做得更好吗?
Scanner sc = new Scanner(System.in);
String[] letters = {
"0",
"1",
"ABC",
"DEF",
"GHI",
"JKL",
"MNO",
"PQRS",
"TUV",
"WXYZ"
};
System.out.println("Write something.");
String numbers = sc.nextLine();
char[] toChar = numbers.toCharArray();
int count = 0;
for (int index = 0; index < toChar.length; index++) {
if (toChar[index] >= '2' && toChar[index] <= '9') {
if (index > 0 && toChar[index] == toChar[index - 1]) {
count++;
}
else if (count > 0) {
System.out.print(letters[toChar[index - 1] - '0'].charAt(count - 1));
count = 0;
}
}
}
【问题讨论】:
-
想想如果一个电话号码有两个相同的数字一个接一个会发生什么。例如应该将
7777投影到一个S(7777) 或两个Qs (77 + 77),或者可能是PR(7 + 777)... -
我很确定 (7777) 应该总是等于 S,(77777) 等于 SP,(777777) 等于 SQ,等等。
-
使用这种编码方式是无法得到
QR或PS的(因为它们都将被编码为77777并解码为SQ) -
哦,是的。我明白。嗯...当我现在考虑它时,
77777应该等于P- 也就是围绕 4 个字母旋转,直到看到一个数字!= 7。 -
你看到我的回答了吗?它解决了所有问题。
标签: java string numbers letters