我不明白为什么 break 不起作用

I can't understand why break is not working

所以我正在尝试编写一个函数来检查数组中是否有重复项。一旦函数检测到重复项,我希望它退出循环并 return 类型。但是,就我而言,它一直在循环,就好像中断不存在一样。有人可以为我解释为什么会这样吗?

 public static boolean singleNumber(int[] nums) {
           boolean type = false;
           for (int i = 0; i < nums.length - 1; i++) {
              for (int j = i + 1; j <= nums.length - 1; j++) {
                   if (nums[i] == nums[j]) {
                        type = true;
                        break;
                  }
               }
             }
             return type;
           }

break只会跳出内循环,不会跳出两个循环。一种选择是 return true 而不是 break。而returnfalse在方法的末尾如果没有前面的return。在这种情况下不需要 type 变量。

即使找到重复值,您当前的逻辑也会继续迭代所有元素。要更改它,您需要检查外部 for 循环中的类型值,如果它是真的,那么您可以从该循环中中断并 return 值。

虽然您当前的逻辑将有助于识别重复值,但一旦找到该值就会产生开销,因为它将继续迭代数组。

这是满足您要求的解决方案:

public class Main {
public static void main(String[] args) {
    System.out.println( singleNumber(new int[]{1,3,1}) );
}

 public static boolean singleNumber(int[] nums) {
       boolean type = false;
       for (int i = 0; i < nums.length - 1; i++) {
          for (int j = i + 1; j <= nums.length - 1; j++) {
               if (nums[i] == nums[j]) {
                    type = true;
                    break; // to break out of the inner for loop
              }
           }
           if( type)   
           {
               break; // to break out of the outer for loop
           }
         }
         return type;
       }

}