【问题标题】:Why is Java giving my ArrayList an IndexOutOfBoundsException? [duplicate]为什么 Java 会给我的 ArrayList 一个 IndexOutOfBoundsException? [复制]
【发布时间】:2020-06-02 10:28:41
【问题描述】:

为什么 Java 会给我一条错误消息? 我正在使用 JavaSE-12,但不明白为什么我有 IndexOutOfBoundsException。 我必须指定 ArrayList 的索引还是我缺少什么?

    import java.util.ArrayList;


public class DSArrayList {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        ArrayList<String> namensListe = new ArrayList<String>();

        namensListe.add("Hans");
        namensListe.add("Peter");

        for(int i = 0; i <= namensListe.size(); i++) {
            System.out.println("Name: " + namensListe.get(i));
        }

    }

}

【问题讨论】:

  • 这里 i &lt;= namensListe.size()&lt;= 您正在迭代列表之外。将此更改为i &lt; namensListe.size()
  • &lt;,而不是&lt;=。使用&lt;=i 在最后一次迭代中将具有值2
  • 另外,你不要在循环中使用i,所以最好使用增强的for循环:for (String name : namensListe) { System.out.println("Name: " + name); }
  • @JohannesKuhn 是什么意思?他使用 i:namensListe.get(i)

标签: java arrays arraylist


【解决方案1】:

for(int i = 0; i &lt; namensListe.size(); i++)

(注意

为了解释,数组和类似结构是从零开始索引的,而不是从一开始。然而,显然我们从一开始计数,而不是从零开始计数。所以数组的长度总是比它包含的最后一项的索引大一。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    • 2014-07-04
    • 2014-05-15
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    相关资源
    最近更新 更多