尝试获取最后一个值时IndexOutOfBounds错误

时间:2014-12-02 01:57:04

标签: java arrays

所以我想循环遍历数组,找到数组在新的一年开始的点和那一年的多少天。我遇到的问题是我无法获得2013年阵列的最后一年。

2010 [25202,25567] 365天。

2011 [25567,25932] 365天。

2012 [25932,26298] 366天。

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 26663
at WeatherAnalysis.yearsArray(WeatherAnalysis.java:213)


    public static void yearsArray(String a[]) { // Array to find the amnount of days in a year
        int range1 = 0;
        int range2 = 1;
        String year = "";


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

            String s = a[i];
            String p = a[i+1];



            if (s.equals(p)) {
                range2 ++;

            }else{


                year = s;
                System.out.println(year+" ["+range1+", "+range2 +") "+ (range2-range1)+" days");
                range1 = range2;
                range2 ++;
            }



        }



    }
}

2 个答案:

答案 0 :(得分:3)

你的循环上升到a.length-1。这是数组中的最后一个索引。但是,当您说String p = a[i+1]时,您尝试在此之后访问索引。这是试图访问超出数组范围的i+1

这是一个调试提示:当异常显示at WeatherAnalysis.yearsArray(WeatherAnalysis.java:213)时,213是抛出异常的行号。这可能是String p = a[i+1]上的一行。

答案 1 :(得分:0)

问题是你引用了a[i + 1]。当i位于数组的最后一个索引时,i + 1位于数组的末尾之后,导致Java抛出IndexOutOfBoundsException