好的,首先:你好!
我会很矮。
public static Boolean or (boolean... args){
// some code to process args and return true or false
return hasArgs & kiekFalse!=args.length ? true : false;
}
这里我有一个名为“或”的函数,它有未知数量的参数可以传递给它。我需要它,因为我真的不知道它。 所以 我可以这样使用它 的System.out.println(或(真,真,真,假真,假)); 但 如果需要读取值,例如键盘,该怎么办? 读取并转换为布尔数组?不起作用,它需要布尔值,而不是布尔[]。 无法解析方法'或(java.lang.Boolean []' 一个接一个地通过?不,我需要立刻通过没有或要求的金额。
有任何想法或建议吗? 理想情况下,我需要弄清楚如何将N Booleans从键盘传递到函数或函数。否则我只需要重写一些(很多)代码。
答案 0 :(得分:0)
您可以将整行读作字符串,然后解析它:
System.out.println("Enter some booleans (true/false) separated by spaces: ");
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
Boolean[] booleans =
Arrays.stream(line.split(" ")).map(Boolean::valueOf).toArray(Boolean[]::new);
答案 1 :(得分:0)
您可以将boolean数组传递给该方法。我写了一个从字符串中解析布尔值的快速示例,将其存储在数组中并将其传递给您的或方法:
public static void main(String[] args) {
boolean[] vals = new boolean[1];
vals[0] = Boolean.parseBoolean("false");
}
public static boolean or(boolean... args) {
return hasArgs & kiekFalse!=args.length ? true : false;
}
我建议从键盘输入中逐行读取布尔值,然后将其传递到数组或列表中。 希望它能解决你的问题。
答案 2 :(得分:0)
创建一个带Collection<Boolean>
的重载,将其转换为boolean[]
,然后调用该方法:
Boolean or(Collection<Boolean> c) {
boolean[] b = new boolean[c.size()];
int i = 0;
for (Boolean cb : c) {
b[i++] = cb; // assuming no nulls.
}
return or(b);
}
(或者您可以使用Boolean[]
参数;它没什么区别,您只需使用length
代替size()
。)
然后你可以从用户输入中读取你的布尔值到List中,然后调用这个方法。
List<Boolean> listOfBooleans = new ArrayList<>();
// Read values, add to list
Boolean result = or(listOfBooleans);
如果您已经在使用Guava,则可以使用Booleans.toArray()
:
or(Booleans.toArray(listOfBooleans))