我正在从手机获取键盘输入,并尝试使用机器人类在计算机上显示它。由于我从电话中获得了 ascii,因此我有一个用于将 ascii 转换为 VirtualKey 值的哈希图。但是我当前的代码有一些奇怪的行为。当我尝试在哈希图中映射某些符号时,例如!“'@我在运行它时得到一个 NullPointer Reference 异常。例如,对于 ! ,电话发送正确的 unicode 值 (33) 并且在哈希表中我有 (int)'!' 作为键,也是 33。所以它应该返回 VK_EXCLAMATION 这是它映射到的内容,但它返回 null :( 有人可以帮忙吗?
这是我在进行查找时截取的代码:
int unicodekey = scanner.nextInt(); //unicode
robotkey = ascii2VK.asciiForVirtualKey.get(unicodekey);
robot.keyPress(robotkey);
robot.keyRelease(robotkey);
我的哈希图看起来像这样:
public class ascii2VK {
protected static final Map<Integer, Integer> asciiForVirtualKey;
static {
asciiForVirtualKey = new HashMap<Integer, Integer>();
asciiForVirtualKey.put(KeyEvent.VK_UNDEFINED, 0);
asciiForVirtualKey.put(KeyEvent.VK_QUOTE, (int)'\'');
asciiForVirtualKey.put(KeyEvent.VK_QUOTEDBL,(int)'"');
asciiForVirtualKey.put(KeyEvent.VK_AMPERSAND, (int)'&');
asciiForVirtualKey.put(KeyEvent.VK_BACK_QUOTE, (int)'`');
asciiForVirtualKey.put(KeyEvent.VK_NUMBER_SIGN, (int)'#');
asciiForVirtualKey.put(KeyEvent.VK_EXCLAMATION_MARK, (int)'!');
asciiForVirtualKey.put(KeyEvent.VK_AT, (int)'@');
asciiForVirtualKey.put(KeyEvent.VK_DOLLAR, (int)'$');
asciiForVirtualKey.put(KeyEvent.VK_BACK_SLASH, (int)'\\');
asciiForVirtualKey.put(KeyEvent.VK_SLASH, (int)'/');
.
.
.
.
}