java将字符转换为数组索引
我试图通过从字符串中读取数组索引来访问字符数组
public class HelloWorld {
public static void main(String[] args) {
// 0123456789
char[] code = {'A', 'B','C','D','E','F','G','H','I','J'};
String orig = "0123456789";
for ( int i=0; i <10; i++) {
System.out.print(code[orig.charAt(i)]);
}
}
}
我希望得到ABCDEFGHIJ
的输出,但我得到了一个运行时错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 48
at HelloWorld.main(HelloWorld.java:9)
# 1 楼答案
由于数组索引是int,因此会自动转换为int。
但是字符“0”的int值是48,因此会显示消息“ArrayIndexOutOfBoundsException”
下面的代码应该可以做到这一点
# 2 楼答案
这是因为奥利格。charAt(i)返回一个ascii字符。所以“0”实际上是48。您可以通过以下操作轻松解决此问题:
# 3 楼答案
当使用}是48。可以减去遇到的最低字符值,以获得正确范围内的索引:
orig.charAt(i)
作为索引时,char
值将转换为int
。每个字符都有一个数值^例如,{# 4 楼答案
只需在字符串长度上建立索引,并在该索引处获取代码数组的字符。。。charAt会给你一个字面上的int值,这显然不是你想要的