无法找到ArrayIndexOutOfBoundsException的源代码

时间:2014-11-20 14:26:59

标签: java arrays

我需要一些帮助来确定此代码抛出ArrayIndexOutOfBoundsException

的原因
public class palindrome 
{
    public static void main(String[] args) 
    {
        String name = "Michael Knight";

        char ch[] = name.toCharArray();
        int size = name.length();

        for(int i = 0; i<size; i++) {
            //System.out.println(size);
            System.out.println(ch[i]);

            for(int j=size; j>=0; j--) {
                System.out.println(ch[j]);
            }
        }
    }
}

4 个答案:

答案 0 :(得分:4)

ch[j]时{p> j==size超出范围,因为索引从0变为大小-1。

应该是:

        for(int j=size-1; j>=0; j--){
            System.out.println(ch[j]);
        }

答案 1 :(得分:1)

for循环中,j从索引j=size开始,由于数组从0开始到size - 1,因此已经超出数组边界,因此ch[j]会抛出ArrayIndexOutOfBoundsException

反向循环的正确方法应该是:

for(int j= (size - 1); j>=0; j--){
    System.out.println(ch[j]);
}

答案 2 :(得分:0)

尝试这样;

public class palindrome{

   public static void main(String []arg$){

    String name = "Michael Knight";

    char ch[] = name.toCharArray();
    int size = name.length();

    for(int i = 0; i<size; i++){
        //System.out.println(size);
        System.out.println(ch[i]);

        for(int j=size-1; j>=0; j--){
            System.out.println(ch[j]);
        }

    }
  }
}

答案 3 :(得分:0)

for(int j=size; j>=0; j--) {
            System.out.println(ch[j]);

j =大小超出范围。 数组的最后一个索引是size-1。 在这种情况下,j应该用数组的最后一个索引进行初始化。