我很想知道何时应该使用布尔值。当布尔值应该是一个好东西时,有什么好的参数可以识别?例如,在Odd-Even排序算法中,布尔值使整个算法起作用。
long[] a = {7,5,8,2,4,1,9,3,5,6};
int nElems = 10;
public void oddEvenSort() {
boolean sorted = false;
while (!sorted) {
sorted = true;
for (int i = 0; i < nElems - 1; i += 2) {
if (a[i] > a[i + 1]) {
swap(i, i + 1);
sorted = false;
}
}
for (int j = 1; j < nElems - 1; j += 2) {
if (a[j] > a[j + 1]) {
swap(j, j + 1);
sorted = false;
}
}
}
}
但是确定应该/可以使用布尔值的时间点在哪里?与其他简单排序算法相比,您可以在其中递减或递增已排序值的索引,但此算法并没有这样做。我可以遵循哪些规则或指导线来更好地理解布尔值的用法吗?这并不仅限于此算法,这只是一个例子。
答案 0 :(得分:2)
当变量有两种状态时应该使用它。在你的情况下,它很简单,算法可以被排序或不排序,因此使用布尔值是很好的。
此外,例如,在深度优先搜索中,可以访问或不访问节点。
另一个例子是在图表中,边缘可以从一个节点转到另一个节点,然后您需要跟踪是否处理了节点。布尔值是这种情况的完美匹配。
答案 1 :(得分:1)
问题有点宽泛;一般来说,当必须说明是否有某种情况时,应使用boolean
;我希望我理解你的问题。
答案 2 :(得分:0)
最终,无论您放入while
循环,for
循环还是if
- else
条件,都会归结为布尔值。 while (i < 10)
,for (int i = 0; i < 10; i++)
,if (i == 10)
。 boolean
对于有条件的检查员来说几乎是不可或缺的。
答案 3 :(得分:0)
如果您具有永远不会包含除true或false之外的其他任何值的true / false值,则应使用布尔值。
汽车有轮子吗?是或否,布尔值。
一辆车有多少个轮子? 3或4:整数。
答案 4 :(得分:0)
我不会在这里使用布尔值,它似乎没有做你想要的。我假设您想要将奇数条目与其他奇数条目交换。
public void oddEvenSort() {
while (true) {
for (int i = 0; i < nElems - 2; i++) {
if (a[i] > a[i + 2]) {
swap(i, i + 2);
continue;
}
}
break;
}
}
答案 5 :(得分:0)
在java中,所有条件都被评估为boolean
值,因此即使您没有明确声明它,也使用boolean
值。现在,当需要boolean
变量时,取决于您使用它的内容。
在上面的排序算法中,它被用作标志,以查看是否需要进一步排序。您假设数组已排序,之后如果不是,则将其标记为false,并且您在2个值之间进行交换。
离开示例,如果您有一个过长的条件并且希望使代码更具可读性,那么使用boolean
值有用的另一个地方。
有时你只是在变量只有两种可能的状态时使用它(比如开/关)而你不想为状态创建一个枚举或常量。