英文:
How do booleans work in if statements in Java?
问题
以下是您提供的代码的翻译部分:
我正在尝试理解 `for` 循环的基本原理,以及它们如何与 `boolean` 值一起工作。下面是我编写的几行简单的代码,但我不太理解输出结果为什么是这样的。
public class notes {
public static void main(String[] args) {
boolean[] test = {false, false, true};
if (test[0] = false) {
System.out.println("yes");
} else {
System.out.println("no");
}
}
}
我会认为,因为测试数组中索引 0 处的 boolean 值为 false,所以这个 if 语句应该打印出 yes。然而,它却打印出了 no。为什么会这样呢?
英文:
I'm trying to understand the basics of for
loops and how they work with boolean
s. There is a simple few lines of code that I wrote and I don't quite understand why the output is what it is.
public class notes {
public static void main(String[] args) {
boolean[] test = {false, false, true};
if (test[0] = false) {
System.out.println("yes");
} else {
System.out.println("no");
}
}
}
I would assume that because the boolean value at index 0 in the test array is false, then this if statement should also print yes. However, it prints no. Why is this?
答案1
得分: 3
尝试这样做。由于条件语句的结果是true或false,你可以直接使用布尔值本身。由于你希望在条件为false时打印"yes",所以你需要将条件设置为true,以便条件语句成功。因此,通过在条件之前加上感叹号!
(也称为非运算符)来取反条件。
public class notes {
public static void main(String[] args) {
boolean[] test = {false, false, true};
// 如果为false就执行
if(!test[0]) {
System.out.println("yes");
} else {
System.out.println("no");
}
}
}
英文:
Try it like this. Since conditionals result in a true or false condition you can just use the boolean by itself. Since you want it to print yes when false, you need to make it true so the conditional will succeed. So invert the condition by prefixing a bang !
(aka the NOT operator).
public class notes {
public static void main(String[] args) {
boolean[] test = {false, false, true};
// if false do it.
if(!test[0]) {
System.out.println("yes");
} else {
System.out.println("no");
}
}
}
</details>
# 答案2
**得分**: 1
以下是翻译好的部分:
你正在使用赋值运算符`=`,而不是使用比较运算符`==`,因此你*没有进行比较*,而是将`false`值赋给了数组的索引0,然后同样的`false`被解释为布尔值;因此,`else`块会执行。
请尝试使用以下代码:
```java
public class notes {
public static void main(String[] args) {
boolean[] test = {false, false, true};
if(test[0] == false) { //你在这里犯了一个错误。
System.out.println("yes");
} else {
System.out.println("no");
}
}
}
请注意,你还可以使用!
一元运算符对布尔表达式取反,例如!booleanValue
。在你的情况下,可以写成!test[0]
。
在这里查看Java中的运算符。
英文:
You are using an assignment operator =
, instead of using a comparison operator ==
, hence you don't compare, but rather assign a false
value to the index 0 of your array and the same false
is then evaluated as a boolean value; therefore, else
block executes.
Try this instead:
public class notes {
public static void main(String[] args) {
boolean[] test = {false, false, true};
if(test[0] == false) { //you had a mistake here.
System.out.println("yes");
} else {
System.out.println("no");
}
}
}
Note, that you can alternatively negate boolean expression with !
unary operator, like !booleanValue
. In your case it would look like !test[0]
.
Have a look at operators in Java.
答案3
得分: 1
你将 false
赋值给数组的第一个元素,这会导致评估结果为 false
,从而执行 else
分支。你需要使用 ==
进行比较,在处理布尔值时,可以直接使用逻辑非运算符 (!
) 来检查是否为 false
。比较布尔值总是多余的,因为比较的结果本身就是一个布尔值。
if (!test[0]) {
System.out.println("yes");
} else {
System.out.println("no");
}
英文:
You are assigning false
to the first element of the array, which evaluates to false
and causes the else
branch to be executed instead. You need to use ==
for comparison and in the case of boolean
s, you can simply use the logical not operator (!
) to check if it is false
. It is always redundant to compare boolean values, as the result of comparison is a boolean.
if(!test[0]) {
System.out.println("yes");
} else {
System.out.println("no");
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论