【问题标题】:How to break if statement inside nested loop in java如何在java中的嵌套循环内打破if语句
【发布时间】:2020-06-16 01:03:41
【问题描述】:

为什么我的代码在到达 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;
                }
            }
        }
    }
}

}

【问题讨论】:

标签: java arrays nested-loops


【解决方案1】:

你可以这样做:

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;
            }
        }
    }
}

你可以用任何你想要的替换outer

【讨论】:

  • 你可以用你想要的任何东西替换外部。 - 不是真的,它也应该是outer:
  • 对不起,错字。为什么你不能用你想要的任何东西替换outer?不是讨厌,只是好奇。
  • 我猜你不能使用保留字 - 不是 100% 肯定。
【解决方案2】:

您可以使用标签来引用这样的循环:

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;
                    }
                }
            }
        }
    }

【讨论】:

    【解决方案3】:

    当您想从外循环中断时,尝试在内循环中设置一个标志。 一旦内部循环中断,检查是否设置了该标志,如果是,则也从外部循环中断。像这样的:

    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;
        }
    

    【讨论】:

      【解决方案4】:

      你已经有相当多的代码了。它似乎为您提供了一些非常具体的东西。您可以将其设为方法并让它返回该点的值。

      2美分

      我没有足够的信息来编写代码。不过,我想试试。运气好的话,它会给你一些你需要的东西:

      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;
      }```
      

      【讨论】:

      • 我确实看过编写代码,但变量sumtarget 的范围不清楚。因此是 2 美分。
      猜你喜欢
      • 1970-01-01
      • 2018-10-07
      • 1970-01-01
      • 1970-01-01
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多