Java 理解多个for循环之间的相互关系

Java 理解多个for循环之间的相互关系,java,arrays,for-loop,Java,Arrays,For Loop,我理解这段代码的一般用途是在数组中查找子数组的起始索引 public static int findArray(int[] array, int[] subArray) { int index = -1; arrayLoop: for (int i = 0; i < array.length; i++) { if (array[i] == subArray[0]) { for (int j = 1; j < subArr

我理解这段代码的一般用途是在数组中查找子数组的起始索引

public static int findArray(int[] array, int[] subArray) {
    int index = -1;
    arrayLoop:
    for (int i = 0; i < array.length; i++) {
        if (array[i] == subArray[0]) {
            for (int j = 1; j < subArray.length; j++) {
                if (i + j > array.length - 1 || array[i + j] != subArray[j]) continue arrayLoop;
                //System.out.println( i+j );
            }
            index = i;
        }
    }
    return index;
}
我认为第一个条件是这样的:(I+j)意味着相对于第二个数组长度向下通过第一个数组,加法检查它是否大于1个数组小于第二个数组的长度,我的问题是为什么?如果我错了,请多加解释。谢谢。

  • 第一个条件(
    i+j>array.length-1
    )是检查主数组的溢出

    例如,主阵列=[1,2,3,4,5]和子阵列=[4,5,6,7]

    考虑这种情况,当代码找到
    4
    时,它将输入逻辑
    数组[i]==子数组[0]
    <代码>[i=3和j=0]现在,您将迭代子阵列以检查每个元素<代码>[i=3和j=1]要检查5,当您到达
    6
    时,您能猜出应该发生什么吗?如果你认为它需要停止,你是对的。此时
    i=3和j=2
    。因此,条件
    i+j>array.length-1
    ==>
    5>4
    将生效,您将退出循环。希望有帮助

  • 第二个条件是检查子阵列和主阵列的元素是否相同

      • 第一个条件(
        i+j>array.length-1
        )是检查主数组的溢出

        例如,主阵列=[1,2,3,4,5]和子阵列=[4,5,6,7]

        考虑这种情况,当代码找到
        4
        时,它将输入逻辑
        数组[i]==子数组[0]
        <代码>[i=3和j=0]现在,您将迭代子阵列以检查每个元素<代码>[i=3和j=1]要检查5,当您到达
        6
        时,您能猜出应该发生什么吗?如果你认为它需要停止,你是对的。此时
        i=3和j=2
        。因此,条件
        i+j>array.length-1
        ==>
        5>4
        将生效,您将退出循环。希望有帮助

      • 第二个条件是检查子阵列和主阵列的元素是否相同


      子阵列var来自何处?我编辑过以便于现在了解子阵列var来自何处?我编辑过以便于现在了解谢谢-但我无法理解它在何处检查子阵列中是否找到5第二个条件,
      array[I+j]!=子数组[j]
      i=3
      j=1
      时,它将检查什么?在这种情况下,第二个数组中的5等于5,因此它将继续执行下一步j+1?是,
      j
      将递增到2,您将达到
      6
      这就是第一个条件开始并将我们抛出的时候。我的感谢@ajcthanks-但我不明白它在哪里检查第二个条件中是否找到了5,
      数组[I+j]!=子数组[j]
      i=3
      j=1
      时它将检查什么?在这种情况下,第二个数组中的5等于5,因此它将继续到下一步j+1?是的,
      j
      将递增到2,您将达到
      6
      ,这是第一个条件开始并将我们抛出的时候。我的感激@ajc
      if (i+j>array.length-1 || array[i+j]!=subArray[j])