项目介绍:用数字表示单词,大致意思就是输入随机的字母组合,给出相应的代表数字
如:输入abc,输出111。用过诺基亚功能机的应该知道那个九键上字母与数字的代表关系
其实思路很明确,输入这个,给出那个,很容易想到键值对,用HashMap做应该是很容易想到的做法
import java.util.HashMap;
import java.util.Scanner;
/**
* @Project: 数字表示单词 —— 输入字母,显示出与之对应的数字(#Nokia九键)
*/
public class Word2Num {
private static HashMap<Character, String> map = new HashMap<>();
static {
mPut("abc","2");
mPut("def","3");
mPut("ghi","4");
mPut("jkl","5");
mPut("mno","6");
mPut("pqrs","7");
mPut("tuv","8");
mPut("wxyz","9");
}
/**
* 封装一个可以让 HashMap连续 put好几个键值对的方法
* @param num 手机上的数字键位
* @param keys 键位上的所有字母
* */
private static void mPut(String keys, String num) {
for (int i = 0; i < keys.length(); i++) {
map.put(keys.charAt(i), num);
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("----- 请输入单词; 若要退出程序,请输入 /quit --------");
String word = sc.nextLine().toLowerCase(); // 全部转成小写字母
while (!word.equals("/quit")) {
for (int i = 0; i < word.length(); i++) {
String num = map.get(word.charAt(i));
if (num == null) {
System.out.println("输入数据不合法!");
break;
}
System.out.print(num);
}
System.out.println();
word = sc.nextLine().toLowerCase();
}
System.out.println("已退出");
}
}
注:本文代码借鉴自NowCoder大佬温酒写bug的代码,在此借鉴学习,特此致谢