请问这个错在哪里?????        char[] letter={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
        int c = 0;
        String b=jTextField2.getText();
        char[] a1 = null;
 
        for(int i=0;i<=b.length();i++){
            c=b.charAt(i);
            a1[i]=letter[c];
        }Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 49
        at javaapplication3.NewJFrame.jButton1ActionPerformed(NewJFrame.java:161)

解决方案 »

  1.   

    char[] a1 = null;没有初始化分配长度,直接使用a1[i]肯定会报错..
    修改为:char[] a1 = new char[26]; //长度根据你自己的需要设定
      

  2.   

    char[] a1 = null;已经是null了。a1[i]=letter[c];这里就会报错。应该把这里修改为:
    char[] a1 = new char[b.length()]你for循环也有错误。
    i<=b.length();
    改成 < ..
      

  3.   

    补充1下。c=b.charAt(i);
    a1[i]=letter[c];这2行代码逻辑上就有错误。
    比如说:
    String b = "a";
    那么你这样获取c的值会为:
    c = 96;
    那么letter[c]就会抛出数组越界异常了。
      

  4.   

    这里有几处错误。
    ①、char[] a1 = null;
    a1未初始化,没有分配内存空间,所以a1[i]=letter[c];就报错了。
    应该改为char[] a1 = new char[b.length()];
    ②、b.charAt(i);返回的应该是char类型,你将char直接转为int的后果是得到的是ascii码值。比如
    char c = '1';
    int i = c;
    此时i = 49,而不是1。
    ③、for(int i=0;i<=b.length();i++){循环条件有问题。因该是i<b.length();数组下标从0开始。
    char[] letter = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
    'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
    'w', 'x', 'y', 'z' };
    String b=jTextField2.getText();
    int len = b.length();
    char[] a1 = new char[len];
    for (int i = 0; i < len; i++) {
    char c = b.charAt(i);
    int index = Integer.parseInt(Character.toString(c));
    a1[i] = letter[index];
    }
      

  5.   

     for(int i=0;i<=b.length()-1;i++)