Java 为什么for循环运行6次迭代?
我需要帮助理解为什么Java 为什么for循环运行6次迭代?,java,for-loop,Java,For Loop,我需要帮助理解为什么for循环运行6次的逻辑。循环不应该在i=4,j=5处停止吗 public static boolean methodName(int[] hand) { int counter = 0; for (int i = 0; i < hand.length-1; i++) { for (int j = i+1; j < hand.length; j++) { if (hand[i] == hand[j] &am
for
循环运行6次的逻辑。循环不应该在i=4,j=5处停止吗
public static boolean methodName(int[] hand)
{
int counter = 0;
for (int i = 0; i < hand.length-1; i++) {
for (int j = i+1; j < hand.length; j++) {
if (hand[i] == hand[j] && j != i) {
counter++;
System.out.println(counter);
}
}
}
if (counter == 4) {
return true;
}
return false;
} // end method
它上升到6,因为对于i的每一个值,它会通过j的每一个大于i的值 因此,这六个条目是:
我猜您需要额外的检查以确保没有匹配项被计数两次。for循环(
for(int I=0;I
)的外部将运行I-1
次(长度为I
)。然后内部循环将在外部for
循环的每次迭代中运行n-i
。因此,它的运行次数远远超过六次。它之所以只运行六次,是因为打印出计数器的条件只发生六次。如果添加println()
您将看到,当长度为5时,它会运行10次:
int numOfLoops = 0;
for (int i = 0; i < hand.length-1; i++) {
for (int j = i+1; j < hand.length; j++) {
System.out.println(++numOfLoops);
if (hand[i] == hand[j] && j != i) {
counter++;
System.out.println(counter);
}
}
}
I=0,J=1,2=2计数器=1
I=0,J=2 2=2计数器=2
I=0,J=3 2=2计数器=3
I=0,J=4 23计数器=3不打印
I=1,J=2,2=2计数器=4
I=1,J=3,2=2计数器=5
I=1,J=4,23计数器=5无打印
I=2,J=3,2=2计数器=6
I=3,J=4,23计数器=6无打印
您是否考虑过添加一个println(i)
和println(j)
来查看这些值是如何变化的?手的长度是多少?您希望得到什么输出?您尝试过调试吗?手的长度是5。您有和&j!=i
,但这总是会发生的,因为j=i+1和above@omajid“我”的价值观在递增之前保持相同的值两次。这是我不太理解的部分,需要帮助理解。谢谢。我正在尝试在修复for循环之前了解它是如何工作的,以达到所需的效果。对。for循环不运行1-2-1-2。在这种情况下,您的第一个for循环(外部循环)将运行5次。但每次运行时,第二个循环(内部循环)将运行5-(i+1)次。因此第一个循环将运行,其中i=0,内部循环将运行4次。然后第一个循环将再次运行,其中i=1。第二个循环将运行三次。等等。希望这有帮助。谢谢。在修复它之前,我正在试着了解for循环是如何工作的,以实现所需的。感谢您的指导。这让我在正确的轨道上,但为什么“我”不是递增的吗?它是根据每个j检查i。@mchlvnctry你是什么意思?你为什么说i
没有递增?在两个for循环的第一次迭代之后,i不应该等于1,j不应该等于2吗?因为我仍然是0,而在4次迭代之后j是1、2和3。@mchlvnctryi
将得到递增ted在循环的每次迭代之后,因此根据您放置println()
的位置,它可能会将i
打印为零。(因为打印行将在i
递增之前发生)
int numOfLoops = 0;
for (int i = 0; i < hand.length-1; i++) {
for (int j = i+1; j < hand.length; j++) {
System.out.println(++numOfLoops);
if (hand[i] == hand[j] && j != i) {
counter++;
System.out.println(counter);
}
}
}
1
2
3
4
5
6
7
8
9
10
I=0,J=1, 2=2 counter = 1
I=0,J=2 2=2 counter = 2
I=0,J=3 2=2 counter = 3
I=0,J=4 2<>3 counter = 3 no print
I=1,J=2, 2=2 counter = 4
I=1,J=3, 2=2 counter = 5
I=1,J=4, 2<>3 counter = 5 no print
I=2,J=3, 2=2 counter = 6
I=3,J=4, 2<>3 counter = 6 no print