Java 将值传递给 method/function

Java pass values into method/function

好的,首先:您好!

我会做空

    public static Boolean or (boolean... args){
    // some code to process args and return true or false
return hasArgs & kiekFalse!=args.length ? true : false;
    } 

这里我有一个名为 "or" 的函数,它有未知数量的参数可以传递给它。我需要它,因为我真的不知道它。 所以 我可以这样使用它 System.out.println(或(真,真,真,假,真,假)); 但 例如,当我需要读取键盘值时该怎么办? 读取并转换为布尔数组?不起作用,它需要 Boolean,而不是 Boolean[]。 无法解析方法'or(java.lang.Boolean[]' 一个一个通过?不,我需要一次通过 none 或要求的金额。

有什么想法或建议吗? 理想情况下,我需要弄清楚如何将 N 个布尔值从键盘传递给或函数。否则我只需要重写一些 (很多) 代码。

您可以将整行作为字符串读取,然后对其进行解析:

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);

您可以将布尔数组传递给该方法。我写了一个从字符串解析布尔值的快速示例,将其存储在数组中并将其传递给您的 or 方法:

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;
}

我建议从键盘输入中逐行读取布尔值,然后将其传递到数组或列表中。 希望它能解决你的问题。

创建一个采用 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<Boolean> listOfBooleans = new ArrayList<>();
// Read values, add to list
Boolean result = or(listOfBooleans);

如果您已经在使用 Guava,您可以使用 Booleans.toArray():

or(Booleans.toArray(listOfBooleans))