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