我似乎无法找到答案 - 如果已经提出这个问题,请道歉。
在下面的Java代码中,我正在尝试编写一个方法,该方法返回在移动键盘上按下以生成输入字符串的数值(作为字符串),例如“cab” - > 222。
HashMap不为空,但是在追加到StringBuffer对象sbf后,当我在main中打印wordToSignature(“cab”)时,它返回nullnullnull。
问题似乎与word.charAt(i)代码有关。当我在没有word.charAt(i)的情况下测试append时,它会执行追加并打印HashMap中的值。
如果有人能指出我可能出错的地方,我将非常感激。
提前致谢。
public static String wordToSignature(String word) {
HashMap <String, String> keypad = new HashMap <String, String>();
keypad.put("a", "2"); keypad.put("b", "2"); keypad.put("c", "2");
keypad.put("d", "3"); keypad.put("e", "3"); keypad.put("f", "3");
keypad.put("g", "4"); keypad.put("h", "4"); keypad.put("i", "4");
keypad.put("j", "5"); keypad.put("k", "5"); keypad.put("l", "5");
keypad.put("m", "6"); keypad.put("n", "6"); keypad.put("o", "6");
keypad.put("p", "7"); keypad.put("q", "7"); keypad.put("r", "7"); keypad.put("s", "7");
keypad.put("t", "8"); keypad.put("u", "8"); keypad.put("v", "8");
keypad.put("w", "9"); keypad.put("x", "9"); keypad.put("y", "9"); keypad.put("z", "9");
StringBuffer sbf = new StringBuffer("");
for(int i = 0; i < word.length(); i++) {
sbf.append(keypad.get(word.charAt(i)));
}
return sbf.toString();
}
答案 0 :(得分:1)
试试这个:
HashMap<Character, String> keypad = new HashMap<Character, String>();
keypad.put('a', "2"); keypad.put('b', "2"); keypad.put('c', "2");
// and so on - notice the single quotes!
如果您要对String
的字符进行迭代,那么您也可以存储Character
而不是String
s作为Map
中的键。
答案 1 :(得分:1)
尝试以下操作,而不是使用键盘hashmap中的字符串使用Char。
public static String wordToSignature(String word) {
HashMap <Character, String> keypad = new HashMap <Character, String>();
keypad.put('a', "2"); keypad.put('b', "2"); keypad.put('c', "2");
keypad.put('d', "3"); keypad.put('e', "3"); keypad.put('f', "3");
keypad.put('g', "4"); keypad.put('h', "4"); keypad.put('i', "4");
keypad.put('j', "5"); keypad.put('k', "5"); keypad.put('l', "5");
keypad.put('m', "6"); keypad.put('n', "6"); keypad.put('o', "6");
keypad.put('p', "7"); keypad.put('q', "7"); keypad.put('r', "7"); keypad.put('s', "7");
keypad.put('t', "8"); keypad.put('u', "8"); keypad.put('v', "8");
keypad.put('w', "9"); keypad.put('x', "9"); keypad.put('y', "9"); keypad.put('z', "9");
StringBuffer sbf = new StringBuffer("");
for(int i = 0; i < word.length(); i++) {
sbf.append(keypad.get(word.charAt(i)));
}
return sbf.toString();
}