Java 布尔赋值不捕捉,需要了解更多

Java 布尔赋值不捕捉,需要了解更多,java,arrays,boolean-logic,Java,Arrays,Boolean Logic,下面的代码检查数组的前四个元素中是否存在9,但是如果数组的前四个元素中不超过19,则以这种方式使用布尔运算符似乎总是失败 为什么会这样?从逻辑上看,这应该是可行的,而且当我理解某些东西为什么不起作用时,这确实有助于我更好地理解。原因是您已对所有元素进行了Itate,结果将是最后一个元素的结果 因此,当你找到匹配结果时,你需要停下来等待 public class MyClass { public static void main(String args[]) { int[]

下面的代码检查数组的前四个元素中是否存在9,但是如果数组的前四个元素中不超过19,则以这种方式使用布尔运算符似乎总是失败


为什么会这样?从逻辑上看,这应该是可行的,而且当我理解某些东西为什么不起作用时,这确实有助于我更好地理解。

原因是您已对所有元素进行了Itate,结果将是最后一个元素的结果

因此,当你找到匹配结果时,你需要停下来等待

public class MyClass {
     public static void main(String args[]) {
       int[] nums = {1, 2, 9, 3, 4};
       boolean results = false;
       int end = nums.length;
       if (end>4)end=4;
       for (int x=0;x<end;x++)
       {
            System.out.println(nums[x]);
            results = (nums[x] == 9);
       }
       System.out.println(results);
    }
 }

原因是您已经对所有元素进行了Itate,结果将是最后一个元素的结果

因此,当你找到匹配结果时,你需要停下来等待

public class MyClass {
     public static void main(String args[]) {
       int[] nums = {1, 2, 9, 3, 4};
       boolean results = false;
       int end = nums.length;
       if (end>4)end=4;
       for (int x=0;x<end;x++)
       {
            System.out.println(nums[x]);
            results = (nums[x] == 9);
       }
       System.out.println(results);
    }
 }
每次都覆盖结果。如前所述,这将告诉您数组中的最后一项是否等于9,而不是数组中的任何项是否等于9

如果num[x]==9,则应将结果赋值为true;否则,不要分配任何内容

@lucumt的回答展示了一个如何做到这一点的例子。另一个例子,只需替换

  for (int x=0;x<end;x++)
   {
        System.out.println(nums[x]);
         if(nums[x] == 9){
          result = true;
          break;
         }
   }

其中|=赋值等于results=results | | num[x]==9;-换句话说,如果任何值为true,则整个表达式将为true。请注意,@lucumt的答案稍微有效一些,因为它是打开的,而这是θ-也就是说,它总是正好运行n次,其中n是列表的长度,但是@lucumt可以在找到任何9时提前结束循环。

您每次都会覆盖结果。如前所述,这将告诉您数组中的最后一项是否等于9,而不是数组中的任何项是否等于9

如果num[x]==9,则应将结果赋值为true;否则,不要分配任何内容

@lucumt的回答展示了一个如何做到这一点的例子。另一个例子,只需替换

  for (int x=0;x<end;x++)
   {
        System.out.println(nums[x]);
         if(nums[x] == 9){
          result = true;
          break;
         }
   }


其中|=赋值等于results=results | | num[x]==9;-换句话说,如果任何值为true,则整个表达式将为true。请注意,@lucumt的答案稍微有效一些,因为它是打开的,而这是θ-也就是说,它总是精确地运行n次,其中n是列表的长度,但是@lucumt可以在找到任何9时提前结束循环。

在for循环中,您每次都过度写入了值。这意味着您正在测试第四个值是否等于9

您可以这样解决您的问题:

results |= (nums[x] == 9);

在for循环中,每次都过度写入值。这意味着您正在测试第四个值是否等于9

您可以这样解决您的问题:

results |= (nums[x] == 9);
试试这个:

   boolean results = false;
   for (int x = 0; x < end; x++) {
       System.out.println(nums[x]);
       if(nums[x] == 9) {
           results = true;
           break;
       }
   }
否则,每次检查时都会重写一个值,请尝试以下操作:

   boolean results = false;
   for (int x = 0; x < end; x++) {
       System.out.println(nums[x]);
       if(nums[x] == 9) {
           results = true;
           break;
       }
   }

否则,每次检查时都要重写一个值

我为您编写了一个类。如果给定数组的前4个元素中的一个或多个元素包含9,则方法nignpresentfirst4elementsint[]arr返回true:

   boolean isPresent(int[] nums, int val)
   {
       for (int x : nums )
       {
            if (nums[x] == val)
              return true;
       }
       return false;
   }

我给你写了一节课。如果给定数组的前4个元素中的一个或多个元素包含9,则方法nignpresentfirst4elementsint[]arr返回true:

   boolean isPresent(int[] nums, int val)
   {
       for (int x : nums )
       {
            if (nums[x] == val)
              return true;
       }
       return false;
   }

你每次都在覆盖这个值。是的,这让我看起来很傻。谢谢你的正确答案。你每次都在覆盖这个值。是的,这让我看起来很傻。谢谢你的正确答案。最好使用x