zoukankan      html  css  js  c++  java
  • Java异常理解之Exception in thread “main“ java.lang.ArrayIndexOutOfBoundsException

    这个异常是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:
    这个异常会经常遇到,只要注意数组的界限,就可以避免了

  • 相关阅读:
    Gym102028L
    CF985G
    三元环 & 四元环计数 学习笔记
    Hall 定理 学习笔记
    CF36E
    CF1110G
    P6071
    可持久化数据结构 学习笔记
    多项式全家桶
    c++ 编译zlib
  • 原文地址:https://www.cnblogs.com/lx06/p/15688926.html
Copyright © 2011-2022 走看看