java - 以编程方式获取键盘左侧的一个字符

标签 java algorithm data-structures

在键盘中,如果我有一个字符“v”(小型大写字母)的 ASCII 码,那么我应该如何获取在 Java 中留给它的字符 1 的 ASCII 值?也就是说,例如我的“v”的 ASCII 值为 118,现在根据标准 qwerty 键盘,“v”左边的字符是“c”。如何在 Java 中实现这一点?有什么想法吗?

假设“m”在“z”的左边,并且总是小型大写字母。

假设我有这样一个函数:

String oneLeft(String s) { }

我想得出的结论是,在记住 QWERTY 键盘的情况下,显示剩下的字符。

最佳答案

这里有一种方法,只需使用字符串作为 keyboard 的定义:

public static char oneLeft (char s)
{
    // note the wrap-around chars ('p', 'l', 'm')
    final String keyboard = "pqwertyuioplasdfghjklmzxcvbnm"; 

    // use lastIndexOf to not conflict with wrap-around chars
    int index = keyboard.lastIndexOf(s); 

    return (index > 0) ? keyboard.charAt(index - 1) : s;
}

用法:

System.out.println(oneLeft('v')); // prints c
System.out.println(oneLeft('z')); // prints m
System.out.println(oneLeft('9')); // prints 9

System.out.println(oneLeft('P')); // prints P

关于java - 以编程方式获取键盘左侧的一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45000140/

相关文章:

c# - 点到对角线的对角线扫描和正交距离

algorithm - 算法的BigO时间复杂度

java - 如何编写排除某个范围值的正则表达式?

java - Java HashMap 怎么可能对 "get"操作执行恒定时间查找 O(1)?

python - Borda的位置排名

java - 使用数组对有界集进行添加/删除操作的最坏情况的时间复杂度?

c - 查找重复字符串的高效搜索算法

java - SSLHandshakeException 导致连接 JMX 时出错

java - 一次性局部变量是final的是什么意思?

c# - 如何实现序列的约束改组