微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

索引是否从 1 开始以增强 for 循环

如何解决索引是否从 1 开始以增强 for 循环

我正在尝试将 int 数组转换为 arraylist 并打印它,我可以使用 for 循环打印它,但我需要使用增强的 for 循环,以便更好地理解。

公共类测试{

public static void main(String[] args) {

        int[] a = {1,2,3,4,5,6};
        
        ArrayList<Integer> l = new ArrayList<Integer>();
    
        for(int i=0;i<a.length;i++) {
            l.add(a[i]);
            //System.out.println(l.get(i));
        }
        
        for(int i : l) {
            System.out.println(i);
            l.get(i);
        }
}

}

输出: 1 2 3 4 5 6 Exception in thread "main" java.lang.indexoutofboundsexception: Index: 6,Size: 6 at java.util.ArrayList.rangeCheck(ArrayList.java:657) at java.util.ArrayList.get(ArrayList.java:433) at Test.main(Test.java:18)

为什么这里的索引不是从 0 开始。

解决方法

For 循环 是合适的循环,当您确切地知道循环内的语句需要迭代多少次时。 For 循环反复迭代一个语句或一个语句块,直到指定的表达式求值为 false。 在 for 循环的变量的情况下总是只有 int 。

For-each 循环 用于遍历对象集合、列表泛型集合或数组列表集合中的项目。 Foreach的情况下,循环的变量与数组下的值的类型相同。

对于每个循环不跟踪索引。所以我们无法使用 For-Each 循环获取数组索引

每个循环的代码中,您可以通过索引获取对象,例如l.get(i);

l 是 Arraylist 类型,它存储从 0 索引开始的值。此外,您的 ArrayList 包含一个整数值。当您到达第 6 个对象时,您正在访问 l.get(6),此时 IndexOutOfBoundsException 抛出。

因此,从您的程序中删除 l.get(i);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。