有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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)

共 (4) 个答案

  1. # 1 楼答案

    由于数组索引是int,因此会自动转换为int。
    但是字符“0”的int值是48,因此会显示消息“ArrayIndexOutOfBoundsException”
    下面的代码应该可以做到这一点

    System.out.print(code[orig.charAt(i)-48]);
    
  2. # 2 楼答案

    这是因为奥利格。charAt(i)返回一个ascii字符。所以“0”实际上是48。您可以通过以下操作轻松解决此问题:

    code[orig.charAt(i) - 48];
    
  3. # 3 楼答案

    当使用orig.charAt(i)作为索引时,char值将转换为int。每个字符都有一个数值^例如,{}是48。可以减去遇到的最低字符值,以获得正确范围内的索引:

    System.out.print(code[orig.charAt(i) - '0']);
    
  4. # 4 楼答案

    只需在字符串长度上建立索引,并在该索引处获取代码数组的字符。。。charAt会给你一个字面上的int值,这显然不是你想要的

    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 < orig.length(); i++) {
                System.out.print( code[i] );
            }
        }