這個異常是Java中的數組越界問題
當你使用不合法的索引訪問數組是會出現這種錯誤
例如:
class Solution {
public static int climbStairs(int n) {
if (n == 1 || n == 2) {
return n;
}
int demo[] = new int[n];
demo[1]=1;
demo[2]=2;
for (int i = 3; i <=n; i++) {
demo[i] = demo[i-1] + demo[i-2];
}
return demo[n];
}
}
public class palouti {
public static void main(String[] args) {
System.out.println(Solution.climbStairs(3));
}
}
發生這種錯誤的原因是:
在這個地方開闢數組長度爲n
int demo[] = new int[n];
而在下面的使用中
for (int i = 3; i <=n; i++) {
demo[i] = demo[i-1] + demo[i-2];
}
無論n的值爲多少都會超出界限
因爲數組的索引是從 0 開始的,前面開闢的長度每次都差了一位
例如:n=3時,在 for 循環的索引中,都會索引到 demo[3],而從 0 開始索引,到demo[3]時,就相當於從 0-1-2-3,超出了數組界限
解決方法也很簡單
只要將
int demo[] = new int[n];
改爲
int demo[] = new int[n+1];
就解決了
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException:
這個異常會經常遇到,只要注意數組的界限,就可以避免了