打印阵列/反向阵列

时间:2014-03-16 19:12:51

标签: java arrays printing indexoutofboundsexception

所以我对打印数组有疑问。这些方法从文件创建的数组中接收数据。由于文件中包含的整数很多,因此每行输出应为10个整数。假设文件包含{0,1,2,3,4,5},输出应为:

0   1   2   3   4   5

第一种方法完全正常。第二种方法返回一个错误,我将在下面包含这个错误。任何人都可以帮我弄清楚什么是错的?我试过谷歌搜索但仍然不明白。这是代码:

public static void printArray(int[] array){
            System.out.println("Printing array: ");
            for (int i = 1; i<array.length+1; i++){
                    System.out.printf("%7d", array[i-1]);
                    if (i%10==0){
                            System.out.println();
                    }

            }
            System.out.println();
}
public static void reverseArray(int[] array){
            System.out.println("Printing reversed array: ");
            int a=0;
            for (int i = array.length; i>-1; i--){
                    System.out.printf("%7d", array[i]);
                    a++;
                    if (a%10==0){
                            System.out.println();
                    }
            }
            System.out.println();
}

这是错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
    at Paniagua_ArrayProcessing.reverseArray(Paniagua_ArrayProcessing.java:49)
    at Paniagua_ArrayProcessing.main(Paniagua_ArrayProcessing.java:8)

感谢您的帮助!希望这只是一个简单的问题。

编辑:这是在java btw。

4 个答案:

答案 0 :(得分:3)

数组从0转到length-1。将您的代码更改为:

for (int i = array.length-1; i>-1; i--){

代码可以运行。

您可以在此处详细了解:Java Language Basics: Arrays

答案 1 :(得分:3)

数组从索引0开始,以array.length - 1结尾。这就是为什么在访问数组的array.length'条目期间得到一个ArrayIndexOutOfBoundsException的原因(这是最后一个条目后面的一个。

public static void printArray(int[] array){
    System.out.println("Printing array: ");
    for (int i = 0; i < array.length; i++){
        System.out.printf("%7d", array[i]);
        if (i % 10 == 0){
            System.out.println();
        }
    }
    System.out.println();
}

此外,您对反向阵列打印中第10个条目的检查不正确,每次都会重置。

public static void reverseArray(int[] array){
    System.out.println("Printing reversed array: ");
    for (int i = array.length - 1; i >= 0; i--){
        System.out.printf("%7d", array[i]);
        if ((array.length - i) % 10 == 0){
            System.out.println();
        }
    }
    System.out.println();
}

答案 2 :(得分:0)

啊这是一个简单的用法:

public class reversearray {

    public static void main(String args[]){

        int arr[]={10,20,30,20,40,50};
        int size=arr.length;
        **for(int i=size-1;i>=0;i--)**{         //This is the imp change
            System.out.println(arr[i]);


        }


    }
}

答案 3 :(得分:0)

将array.length更改为array.length-1,因为数组的最后一个索引是length-1

  public static void reverseArray(int[] array){
        System.out.println("Printing reversed array: ");
        int a=0;
        for (int i = array.length-1; i>=0; i--){
                System.out.printf("%7d", array[i]);
                a++;
                if (a%10==0){
                        System.out.println();
                }
        }
        System.out.println();
  }