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个数组小于第二个数组的长度,我的问题是为什么?如果我错了,请多加解释。谢谢。- 第一个条件(
)是检查主数组的溢出 例如,主阵列=[1,2,3,4,5]和子阵列=[4,5,6,7] 考虑这种情况,当代码找到i+j>array.length-1
时,它将输入逻辑4
<代码>[i=3和j=0]现在,您将迭代子阵列以检查每个元素<代码>[i=3和j=1]要检查5,当您到达数组[i]==子数组[0]
时,您能猜出应该发生什么吗?如果你认为它需要停止,你是对的。此时6
。因此,条件i=3和j=2
==>i+j>array.length-1
将生效,您将退出循环。希望有帮助5>4
- 第二个条件是检查子阵列和主阵列的元素是否相同
- 第一个条件(
)是检查主数组的溢出 例如,主阵列=[1,2,3,4,5]和子阵列=[4,5,6,7] 考虑这种情况,当代码找到i+j>array.length-1
时,它将输入逻辑4
<代码>[i=3和j=0]现在,您将迭代子阵列以检查每个元素<代码>[i=3和j=1]要检查5,当您到达数组[i]==子数组[0]
时,您能猜出应该发生什么吗?如果你认为它需要停止,你是对的。此时6
。因此,条件i=3和j=2
==>i+j>array.length-1
将生效,您将退出循环。希望有帮助5>4
- 第二个条件是检查子阵列和主阵列的元素是否相同
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])