Java - 创建一个索引长度的数组

时间:2015-10-26 08:33:01

标签: java arrays

我正在尝试使用Java创建一个数组,该数组可以包含与索引'i'一样多的数字。

for (int i = 0; i <= 10; i++)
    {
        int[] zahlenListe = new int[i];
        zahlenListe[i] = i + 5;
        System.out.println(zahlenListe[i]);

    }

但我总是收到错误消息: 线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:0 在Start.main(Start.java:27)

Java:27是这行代码:zahlenListe [i] = i + 5;。

但是当我改变这一行时一切正常。

int[] zahlenListe = new int[i];

到此:

int[] zahlenListe = new int[11];

有人在乎解释错误的位置吗?

6 个答案:

答案 0 :(得分:8)

数组索引基于零。因此,i大小的数组的最大索引是i-1

答案 1 :(得分:5)

长度为i的数组没有i个索引。有效索引从0i-1

如果使用int[] zahlenListe = new int[i+1];初始化数组,则可以为zahlenListe[i]分配值。

答案 2 :(得分:1)

int[] zahlenListe = new int[i];
zahlenListe[i] = i + 5;

数组从索引0开始。

所以索引i永远不会出现在i维数组中。它停在i-1

对于i == 0,数组为空(根本没有条目)。

您可能希望在i=1开始循环。

从你的代码中还不清楚为什么你需要一个数组(但你可能有更多的代码在那里你没有显示)。

答案 3 :(得分:1)

如果使用以下方法创建数组:

int[] zahlenListe = new int[i];

数组zahlenListe中的最后一个元素是zahlenListe [i-1]而不是zahlenListe [i]。另外,假设我应该从1开始而不是0,因为长度数组是没有意义的。

因此,请使用

zahlenListe[i-1] = i + 5;
System.out.println(zahlenListe[i-1]);

答案 4 :(得分:1)

如您所见,您需要在数组中启动0size-1;

int[] zahlenListe = new int[i];

您的数组大小始终为i,这意味着您可以访问max i-1

假设i总是大于0

答案 5 :(得分:-1)

基本上因为在您的情况下,您告诉计算机转到第11个元素。想一想......

int i = 0; 

First iteration i = 0
if i <= 10; then i = i + 1

Second iteration i = 1
if i <= 10; then i = i + 1

Third iteration i = 2
if i <= 10; then i = i + 1

Fourth iteration i = 3
if i <= 10; then i = i + 1

Fifth iteration i = 4
if i <= 10; then i = i + 1

Sixth iteration i = 5
if i <= 10; then i = i + 1

Seventh iteration i = 6
if i <= 10; then i = i + 1

Eighth iteration i = 7
if i <= 10; then i = i + 1

Ninth iteration i = 8
if i <= 10; then i = i + 1

Tenth iteration i = 9
if i <= 10; then i = i + 1

Eleventh iteration i = 10
if i <= 10; then i = i + 1

到达此处后,您将尝试访问不存在的元素。因为你的条件说只要我小于或等于10,就应该重复这个任务。如果你改变&lt; = for&lt;然后你停在可用的最后一个元素。