首页 > 解决方案 > 取字符并返回等效的键盘

问题描述

所以我正在编写代码,它将接受一个字符并将其字母数字键盘等效为一个字符。问题是,我在一个盒子里得到一个问号作为回报。我检查了输入是否正确。例如,使用 char 'h' 输入,我应该得到一个 char '4' 返回。希望有人能够发现我的错误。代码如下:

public char getDigit(char letter) throws Exception{

    switch (letter) {           
    case 'a': case 'b': case 'c': case '2':
        return 2;
    case 'd': case 'e': case 'f': case '3':
        return 3;
    case 'g': case 'h': case 'i': case '4':
        return 4;
    case 'j': case 'k': case 'l': case '5':
        return 5;
    case 'm': case 'n': case 'o': case '6':
        return 6;
    case 'p': case 'q': case 'r': case 's': case '7':
        return 7;
    case 't': case 'u': case 'v': case '8':
        return 8;
    case 'w': case 'x': case 'y': case 'z': case '9':
        return 9;
    default:
        throw new IllegalArgumentException("Must be a letter or number on the Alpha-Numeric Keypad.");
    }
}

标签: java

解决方案


您的方法的返回类型是char

现在使用你的 switch 语句。您返回 2 到 9 范围内的 char 值。现在看一个ASCII 表

惊喜:这些字符都是“不可打印”的控制字符。因此,您的控制台为您提供“?” 当您打印它们时!

如果你想要'4',你的代码必须返回'4',而不是4!或 52,因为 ASCII 表中的该条目表示“4”。


推荐阅读