【问题标题】:Java - create a array with the length of an indexJava - 创建一个索引长度的数组
【发布时间】:2015-10-26 08:33:01
【问题描述】:

我正在尝试使用 Java 创建一个数组,该数组可以容纳与索引“i”一样多的数字。

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

    }

但我总是收到错误消息: 线程“主”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];

有人愿意解释错误在哪里吗?

【问题讨论】:

    标签: java arrays


    【解决方案1】:

    数组索引从零开始。因此i 大小的数组的最大索引是i-1

    【讨论】:

    • 在看到一个错字然后进行编辑后,我必须注意,如果技术上下文是“索引”,那么“索引”的复数形式
    • @Arc676 编辑并遵循老派 :)
    • @sᴜʀᴇsʜᴀᴛᴛᴀ 索引和索引都是有效的英文,但是索引更多地用于技术上下文,所有数据库文档都将它们称为索引
    • @SleimanJneidi 两者都是有效的,indices 发音时消耗的卡路里更少。试试看;)
    【解决方案2】:

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

    如果您使用int[] zahlenListe = new int[i+1]; 初始化您的数组,您将能够为zahlenListe[i] 分配一个值。

    【讨论】:

      【解决方案3】:
      int[] zahlenListe = new int[i];
      zahlenListe[i] = i + 5;
      

      数组从索引0开始。

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

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

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

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

      【讨论】:

        【解决方案4】:

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

        int[] zahlenListe = new int[i];
        

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

        因此,使用

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

        【讨论】:

          【解决方案5】:

          如你所见,你需要在一个数组中从0 开始到size-1

          int[] zahlenListe = new int[i];
          

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

          假设i 总是大于0

          【讨论】:

            【解决方案6】:

            基本上是因为在您的情况下,您是在告诉计算机转到第 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
            

            一旦你到达这里,你就试图访问一个不存在的元素。因为您的条件表明,只要 i 小于或等于 10,它就应该重复该任务。如果您将

            【讨论】:

            • 第十一次迭代没有问题(至少不比第一次多)。
            • 不明白你的意思,解释一下!
            • 当前代码在第一次迭代中崩溃,此时i==0。如果你解决了这个问题,它也适用于i==10
            猜你喜欢
            • 1970-01-01
            • 2016-11-15
            • 1970-01-01
            • 2018-10-15
            • 2015-02-23
            • 2022-11-25
            • 2012-06-19
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多