在进行跳出最外层循环时i却变成了1,一直搞不懂。
代码:
int[] nums={3,3};
int target = 6;
int i,j=0;
f1:for(i=0;i<nums.length-1;i++){
for(j=i+1;j<nums.length-1;j++){
if(nums[i]+nums[j]==target)break f1;
}
}
int result[] = {i,j};
System.out.println(result[0]);
System.out.println(result[1]);
运行截图:
外层循环只执行一次,此时i=0,内层循环j=i+1,也就是j=1,不满足条件不会执行循环体,最后执行外层的i++,此时i=1,不满足循环跳出,
result[] = {1,1};
所以两次输出都是1
i=0时,j=i+1 所以j=1。
j<nums.length-1; nums.length是2,所以j<1。
前后一判断,循环是进不去的,也就是if(nums[i]+nums[j]==target)根本没执行到。
f1:for(i=0;i<nums.length-1;i++){//在这i被++,但是到下一次才会被用到。 i=1
for(j=i+1;j<nums.length-1;j++){//这里j=i+1=1,j<nums.length-1=false。 j=1
if(nums[i]+nums[j]==target)break f1;//正因为j<nums.length-1=false,所以这一步根本没有走。直接循环第一个for,然后结束。所以都是1, 能明白吗?
}
}
我不太懂你的意思,i不等于1那等于什么?首先你要明确你代码中的break,如果你是初学者的话,建议你理解成“立刻跳出,再不执行!”,因为你第一个for循环下的第二个for循环在第一次执行时就满足了break的条件,所以从那开始,后面的代码不再执行,也就是说此时已略过第一个for中的i++循环控制语句而结束循环
把break f1改成break就行了