Java 跳出2层for循环时遇到的问题

在进行跳出最外层循环时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]);

运行截图:

img

外层循环只执行一次,此时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就行了