为了账号安全,请及时绑定邮箱和手机立即绑定

获取字符并返回键盘等效项

获取字符并返回键盘等效项

慕婉清6462132 2022-08-17 12:23:43
因此,我正在编写代码,该代码将采用一个字符并返回其等效于字符的字母数字键盘。问题是,我在一个盒子里得到了一个问号作为回报。我已经检查了输入是否正确。例如,使用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.");    }}
查看完整描述

2 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

方法的返回类型为 char

现在采用您的开关语句。返回介于 2 到 9 之间的 char 值。现在看一下 ASCII 表

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

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


查看完整回答
反对 回复 2022-08-17
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

您没有得到正确的输出,因为您正在用作函数的返回类型。您应该使用int作为返回类型而不是char,因为在开关情况下,您正在与字符进行比较并返回数字值因此将代码替换为以下代码,这将起作用:chargetDigit(..)


public int 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.");

}

}


查看完整回答
反对 回复 2022-08-17
  • 2 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信