package com.cn;
import java.util.Scanner;
/**
* 7-9 九宫格输入法 (15 分)
* 假设有九宫格输入法键盘布局如下:
* [ 1,.?! ] [ 2ABC ] [ 3DEF ]
* [ 4GHI ] [ 5JKL ] [ 6MNO ]
* [ 7PQRS ] [ 8TUV ] [ 9WXYZ ]
* [ 0空 ]
* <p>
* 注意:中括号[ ]仅为了表示键盘的分隔,不是输入字符。每个中括号中,位于首位的数字字符即是键盘的按键,按一下即可输入该数字字符。
* 多次按同一个键,则输入的字符依次循环轮流,例如按两次3,则输入D;按5次7,则输入S;按6次2,则输入A。按键0的输入组合是0和空格字符,即按两次0输入空格。
* 你需要对于给定的按键组合,给出该组合对应的文本。
* <p>
* 输入格式:
* <p>
* 输入在一行中给出数个字符的按键组合(例如 999 表示按3次9),每个字符的按键组合之间用空格间隔,最后一个输入法组合之后以换行结束。
* 输入数据至少包括一个字符的按键组合,且输入总长度不超过500个字符
* <p>
* 输出格式:
* 在一行中输出该按键组合对应的文本。
* <p>
* <p>
* 输入样例:
* 22 5555 22 666 00 88 888 7777 4444 666 44
* <p>
* 输出样例:
* ALAN TURING
*
* @author gcc
*/
public class NineKeyBoard {
public static char[][] keyboards = {
{'0',' '},
{'1', ',', '.', '?', '!'},
{'2', 'A', 'B', 'C'},
{'3', 'D', 'E', 'F'},
{'4', 'G', 'H', 'I'},
{'5', 'J', 'K', 'L'},
{'6', 'M', 'N', 'O'},
{'7', 'P', 'Q', 'R', 'S'},
{'8', 'T', 'U', 'V'},
{'9', 'X', 'X', 'Y', 'Z'}};
public static char getCharByString(String str){
char ch ;
int index = Integer.valueOf(str.charAt(0)+"");
System.out.println(index);
if (str.length() <=keyboards[index].length) {
ch =keyboards[index][str.length()-1];
System.out.println(ch);
} else {
ch = keyboards[index][
(str.length() - keyboards[index].length) % (keyboards[index].length - 1)];
}
return ch;
}
public static String numToStr(String input) {
char[] result = null;
if (input.length() >= 1 || input.length() < 500) {
String[] temp = input.split(" ");
result = new char[temp.length];
for (int i = 0; i < temp.length; i++) {
result[i] = getCharByString(temp[i]);
}
}
return String.valueOf(result);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
String rs = numToStr(str);
System.out.println(rs);
}
}
运行结果如下:
22 5555 22 666 00 88 888 7777 4444 666 44 【注释:输入】
2
A
5
L
2
A
6
N
0
8
T
8
U
7
R
4
I
6
N
4
G
ALAN TURING 【输出】