1

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

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

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

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

7 回答 7

3

java.lang.ArrayIndexOutOfBoundsException means you are trying to access a array index that doesn't exist.

The problem is that your array is of size one.However, you are going through that loop six times. You can either make n equal to one, or increase the size of your array.

于 2014-11-12T20:46:26.977 回答
1

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

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

诠释 n = 6;

  int[]A= new int [6];

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

   } 
于 2013-04-18T03:32:40.637 回答
0

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

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

于 2013-04-18T03:31:35.807 回答
0

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

你可能想要的是这样的:

  int n=6;

      int[]A= new int [n];

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

   }
于 2013-04-18T03:32:33.520 回答
0

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

在你的 for 循环中你应该写

for (int i=0; i< A.length; i++ ){

  A[i]=keyboard.nextInt();
}

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

于 2013-04-18T03:33:23.303 回答
0

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

        int []array=new int[3];

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

:D

于 2013-04-18T03:33:41.747 回答
0

每当你遇到错误时,总是首先检查它的 API。例如这里是 ArrayIndexOutOfBoundException 的文档。

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

于 2013-04-18T03:50:48.223 回答