嘿伙计们,我想知道是否有任何方法可以在 java 中返回一堆布尔值的一部分。简单地说,我想知道是否有一种方法可以创建一个方法,当给定四个布尔值时,如果其中三个为真,则返回真,但如果少于三个为真,则返回假。我知道这可能很难理解,如果您不理解,只需发表评论即可。
问问题
426 次
8 回答
3
数数数组中的真值...
public boolean checkBools(boolean[] bools){
int cnt=0;
for(boolean b : bools)
if(b) cnt++;
return cnt < 3 ? false : true;
}
于 2012-05-19T23:16:32.570 回答
2
奇怪的问题......无论如何,这只是 4 个布尔值的可能解决方案:
public boolean booleanFraction(boolean a, boolean b, boolean c, boolean d) {
int ia = a ? 1 : 0;
int ib = b ? 1 : 0;
int ic = c ? 1 : 0;
int id = d ? 1 : 0;
return ia + ib + ic + id == 3;
}
对于更通用的解决方案,这里有一个方法,它接收true
考虑true
整个表达式所需的布尔值数量和大于零的布尔值变量数量作为参数:
public static boolean booleanFraction(int number, boolean... bools) {
int acc = 0;
for (boolean b : bools)
acc += b ? 1 : 0;
return acc == number;
}
像这样称呼它,例如问题中的示例:
booleanFraction(3, true, true, true, false);
> true
booleanFraction(3, false, false, true, false);
> false
于 2012-05-19T23:19:35.450 回答
2
只需创建一个为每个 true 递增 1 的 int。如果大于或等于 3,则返回 true。话虽如此,我不确定您的卡在哪里,因为这似乎太简陋了,甚至无法提及。
于 2012-05-19T23:12:56.983 回答
1
public boolean checkBooleans(boolean b1, boolean b2, boolean b3, boolean b4) {
boolean[] array = new boolean[4];
boolean[0] = b1;
boolean[1] = b2;
boolean[2] = b3;
boolean[3] = b4;
int j = 0;
for(int i = 0; i < array.length; i++) {
if(array[i]) {
j++;
}
if(j == 3) {
return true;
}
}
return false;
}
于 2012-05-19T23:16:45.580 回答
0
使用流:
static boolean threeOrMore(Boolean... bools) {
return Stream.of(bools).filter(x -> x).count() >= 3;
}
于 2014-05-20T19:52:50.583 回答
0
boolean nOfM(int n, boolean... m) {
for (boolean mi : m) if (mi) n--;
return n < 1;
}
于 2013-06-28T06:04:38.703 回答
0
如果您希望您的答案作为一种boolean
表达方式,您可以尝试,
boolean atLeastThree(boolean a, boolean b, boolean c, boolean d) {
return a ? (b && (c || d) || (c && d)) : (b && c && d);
}
统计 s的个数true
更优雅一点,也更容易理解,
boolean atLeastThree(boolean a, boolean b, boolean c, boolean d) {
return (a ? 1 : 0) +
(b ? 1 : 0) +
(c ? 1 : 0) +
(d ? 1 : 0) > 2;
}
于 2012-05-19T23:21:03.243 回答
0
我对2-out-of-3 问题的答案的变体:
boolean atLeastThree(boolean a, boolean b, boolean c, boolean d)
{
int n = -3;
if (a) n++;
if (b) n++;
if (c) n++;
if (d) n++;
return (n >= 0);
}
于 2015-03-25T20:09:42.077 回答