所以我想循环遍历数组,找到数组在新的一年开始的点和那一年的多少天。我遇到的问题是我无法获得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 ++;
}
}
}
}
答案 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
。