简体   繁体   English

如何在 java 的嵌套循环内中断 if 语句

[英]How to break if statement inside nested loop in java

Why my code don't stop when reach if statement, I want to break outside all loops once the break statement call, thanks before, sorry for my bad english为什么我的代码在到达 if 语句时不会停止,我想在 break 语句调用后打破所有循环,谢谢,对不起我的英语不好

    for (int i = 0;i<nums.length;i++){
        for (int j = 0; j <nums.length;j++){
            if(i!=j){
                System.out.print(i+" "+j+" ");System.out.println("Value : "+nums[i]+" "+nums[j]);
                sum = nums[i]+nums[j];
                if(sum==target){
                    System.out.println("Result : "+nums[i]+" "+nums[j]);
                    finalArray[0] = i;
                    finalArray[1] = j;
                    break;
                }
            }
        }
    }
}

} }

You can do this:你可以这样做:

outer:
for (int i = 0;i<nums.length;i++){
    for (int j = 0; j <nums.length;j++){
        if(i!=j){
            System.out.print(i+" "+j+" ");System.out.println("Value : "+nums[i]+" "+nums[j]);
            sum = nums[i]+nums[j];
            if(sum==target){
                System.out.println("Result : "+nums[i]+" "+nums[j]);
                finalArray[0] = i;
                finalArray[1] = j;
                break outer;
            }
        }
    }
}

You can replace outer with whatever you want.你可以用你想要的任何东西替换outer

You can use labels to refer to loops like this:您可以使用标签来引用这样的循环:

loop1:        
for (int i = 0;i<nums.length;i++){
            for (int j = 0; j <nums.length;j++){
                if(i!=j){
                    System.out.print(i+" "+j+" ");System.out.println("Value : "+nums[i]+" "+nums[j]);
                    sum = nums[i]+nums[j];
                    if(sum==target){
                        System.out.println("Result : "+nums[i]+" "+nums[j]);
                        finalArray[0] = i;
                        finalArray[1] = j;
                        break loop1;
                    }
                }
            }
        }
    }

Try setting a flag in the inner loop when you want to break from the outer loop.当您想从外循环中断时,尝试在内循环中设置一个标志。 once inner loop breaks check if that flag is set, if it is, break from outer loop as well.一旦内部循环中断,检查是否设置了该标志,如果是,则也从外部循环中断。 Something like this:像这样的东西:

boolean break_outer = false
for (int i = 0;i<nums.length;i++){
        for (int j = 0; j <nums.length;j++){
            if(i!=j){
                System.out.print(i+" "+j+" ");System.out.println("Value : "+nums[i]+" "+nums[j]);
                sum = nums[i]+nums[j];
                if(sum==target){
                    System.out.println("Result : "+nums[i]+" "+nums[j]);
                    finalArray[0] = i;
                    finalArray[1] = j;
                    break_outer = true
                    break;
                }
            }
        }
        if (break_outer)
              break;
    }

You already have quite a bit of code there.你已经有相当多的代码了。 It seems to be getting something very specific for you.它似乎为您提供了一些非常具体的东西。 You could make it a method and have it return the values at that point.您可以将其设为方法并让它返回该点的值。

2cents 2美分

I am not confident I have enough information to write the code.我不确定我有足够的信息来编写代码。 However, I'd like to try.不过,我想试试。 With any luck it will give you something you need:运气好的话,它会给你一些你需要的东西:

private int[] convertToFinalArray(int[] nums, int target) {
    int sum = 0;

    int[] finalArray = new int[nums.length]; // I am inferring the length.
    for(int i = 0;i<nums.length; i++) {
        for (int j = 0; j < nums.length; j++) {
            if (i != j) {
                System.out.print(i + " " + j + " ");
                System.out.println("Value : " + nums[i] + " " + nums[j]);
                sum = nums[i] + nums[j];
                if (sum == target) {
                    System.out.println("Result : " + nums[i] + " " + nums[j]);
                    finalArray[0] = i;
                    finalArray[1] = j;
                    return finalArray;
                }
            }
        }
    }
    return finalArray;
}```

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM