【问题标题】:ArrayIndexOutOfBound error when i used enhanced for loop [duplicate]当我使用增强的for循环时出现ArrayIndexOutOfBound错误[重复]
【发布时间】:2022-01-03 14:25:00
【问题描述】:

我们可以使用增强的 for 循环而不会出现 ArrayIndexOutOfBound 错误。 因为在使用正常的 for 循环后它正在工作。

    public static void main(String[] args) {
        int a[] = {1,2,3,4};
        int b[] = {1,2,3,4};
 boolean status = true;
        if (a.length == b.length){
            for (int i:a){
                if (a[i] != b[i]){
                    status =false;
                }
            }
        }
        else {
            status = false;
        }

        if (status == true){
            System.out.println("arrays are equal...");
        }
        else {
            System.out.println("arrays not equal...");
        }
    }
}

【问题讨论】:

标签: java arrays foreach equals arrayindexoutofboundsexception


【解决方案1】:

那是因为您正在访问数组 a 的元素。

循环

for (int i : a) {
  System.out.println(i);
}

将打印出值:1、2、3、4。

您可能期望得到 0、1、2、3,但这不是增强循环的工作方式。

改进

不用手动比较两个数组,可以使用方便的方法Arrays.equals():

public static void main(String[] args) {
    int a[] = {1,2,3,4};
    int b[] = {1,2,3,4};
    boolean status = java.util.Arrays.equals(a, b);

    if (status){
        System.out.println("arrays are equal...");
    } else {
        System.out.println("arrays not equal...");
    }
}

【讨论】:

  • 我认为您也应该建议如何手动实际比较数组。处于学习阶段的人应该首先自己编写解决方案,然后你告诉他们:在现实世界中,使用这个库调用。
  • if (a.length == b.length){ for (int i:a){ if (a[i-1] != b[i-1]){ status =false; } } } 现在它正在工作
  • @Prajakta Yadav,这只是因为您的数组具有以下值:1,2,3,4。尝试使用{1,2,3,5} 或{1,2,4} 之类的数组,它不再起作用了。
【解决方案2】:

for (int i:a) // 你错了,i 等于 1,2,3,4 数组索引必须从 0 开始

 public static void main(String[] args) {
        int a[] = {1,2,3,4};
        int b[] = {1,2,3,4};
 boolean status = true;
        if (a.length == b.length){
            for (int i=0; i<a.length; i++){  // look at here 
                if (a[i] != b[i]){
                    status =false;
                }
            }
        }
        else {
            status = false;
        }

        if (status == true){
            System.out.println("arrays are equal...");
        }
        else {
            System.out.println("arrays not equal...");
        }
    }
}



【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 2013-05-13
    • 2015-12-13
    • 2016-03-23
    • 1970-01-01
    • 2014-02-23
    相关资源
    最近更新 更多