【问题标题】:What does java.lang.ArrayIndexOutOfBoundsException mean? [duplicate]java.lang.ArrayIndexOutOfBoundsException 是什么意思? [复制]
【发布时间】:2013-04-18 03:27:16
【问题描述】:

我是 Java 新手,今天我开始研究数组,但我迷路了。我正在尝试将一些值放入数组中,但出现错误 java.lang.ArrayIndexOutOfBoundsException

这是我到目前为止所做的。

      int n=6; 
      int[]A= new int [1];

      for(i=0;i<n;i++){
          A[i]=keyboard.nextInt();
      } 

【问题讨论】:

  • 表示你试图访问A[1],其中数组只有一个索引:0
  • @alfasin,你错了。数组只有 A[0]
  • @alfasin 那是你在我更正后编辑的内容。
  • @alfasin,没关系。没有大碍。我看到了一些东西,并想纠正它。就是这样。

标签: java arrays


【解决方案1】:

java.lang.ArrayIndexOutOfBoundsException 表示您正在尝试访问不存在的数组索引。

问题是您的数组大小为 1。但是,您将经历该循环六次。您可以使 n 等于 1,或者增加数组的大小。

【讨论】:

    【解决方案2】:

    问题是你的数组的大小是一。您将数组的大小设置在数组声明的括号之间。

    您的 for 循环执行了 6 次。您可以将数组的大小更改为 6。

    int n=6;

      int[]A= new int [6];
    
    for(i=0;i<=n;i++)
       {
          A[i]=keyboard.nextInt();
    
       } 
    

    【讨论】:

      【解决方案3】:

      这意味着它所说的那种。您正在尝试访问您定义的数组边界之外的元素。

      你的数组 新的int [1]; 只会容纳一个元素。 我想你的意思是 int [n];

      【讨论】:

        【解决方案4】:

        您正在尝试访问您无权访问的内存。您的数组被声明为大小为 1,并且您正在设置 n = 6。因此,遍历数组 A,您正在尝试访问尚未声明的数组的 5 个假想位置。因此,数组索引超出范围。

        你可能想要的是这个:

          int n=6;
        
              int[]A= new int [n];
        
            for(i=0;i<n;i++)
           {
              A[i]=keyboard.nextInt();
        
           }
        

        【讨论】:

          【解决方案5】:

          在这里,您已将数组的大小声明为 1,但您正在遍历数组 6 次。

          在你的for循环中你应该写

          for (int i=0; i< A.length; i++ ){
          
            A[i]=keyboard.nextInt();
          }
          

          所以在这种情况下,您的循环只会遍历一次。

          【讨论】:

            【解决方案6】:

            java.lang.ArrayIndexOutOfBoundsException 表示您正在尝试访问不存在的数组索引。例如,你有一个数组

                    int []array=new int[3];
            

            如果您尝试访问数组 [4],它会给您 ArrayIndexOutOfBoundsException。 最重要的是,每当您访问超出其边界的数组时,您都会收到此异常。

            :D

            【讨论】:

              【解决方案7】:

              每当您遇到错误时,请务必先查看其 API。例如here 是 ArrayIndexOutOfBoundException 的文档。

              在您的代码中,您通过说new int [1] 创建了一个大小为 1 的数组,现在当您遍历数组并检查 A[1] 的值时,您正在尝试访问数组的第二个元素,它不会t 甚至存在,因为数组索引从 0 开始。因此 您正在访问的索引超出范围

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2019-09-12
                • 2015-01-22
                • 2020-10-27
                • 2015-07-15
                • 2018-07-17
                • 2012-08-13
                • 2011-12-23
                相关资源
                最近更新 更多