【发布时间】:2018-02-01 20:39:51
【问题描述】:
有人可以向我解释一下,我在 java 中的方法如何期望一个 int,但接受'!'作为论据?此外,当我调试它时,它如何将它解释为 33,但是当我执行 System.out.println(Character.getNumericValue('!'));它打印 -1?
这里是代码家伙:
public abstract class Stuff {
public static char getCharacterFromNumber(int number) throws InvalidCharException {
if(number>=20) {
if (number <= 45) {
switch (number) {
case 20:
return 'a';
case 21:
return 'b';
case 22:
return 'c';
case 23:
return 'd';
case 24:
return 'e';
case 25:
return 'f';
case 26:
return 'g';
case 27:
return 'h';
case 28:
return 'i';
case 29:
return 'j';
case 30:
return 'k';
case 31:
return 'l';
case 32:
return 'm';
case 33:
return 'n';
case 34:
return 'o';
case 35:
return 'p';
case 36:
return 'q';
case 37:
return 'r';
case 38:
return 's';
case 39:
return 't';
case 40:
return 'u';
case 41:
return 'v';
case 42:
return 'w';
case 43:
return 'x';
case 44:
return 'y';
case 45:
return 'z';
}
}
}
throw new InvalidCharException();
}
public static void main(String [] args){
try {
System.out.println(Stuff.getCharacterFromNumber('!'));
} catch (InvalidCharException e) {
e.printStackTrace();
}
System.out.println(Character.getNumericValue('!'));
}
}
我已经搜索过,但没有找到与我的问题类似的东西,如果有人对标题有更好的想法,我会应用它:)
【问题讨论】:
-
因为单引号表示
char可以用作数字。 -
我可以理解,但它怎么可能是-1和33呢?如果它是-1,我的 if 语句不应该停止它并抛出异常吗?
-
尝试阅读 Character.getNumericValue() issue 或阅读该方法的文档,其中描述了您看到所见的原因。
-
换一种说法,考虑像
return (char) ('a' - 20 + number);这样的东西,而不是开关。
标签: java