Java将值传递给方法/函数

时间:2017-10-14 15:20:27

标签: java boolean arguments variadic-functions args

好的,首先:你好!

我会很矮。

    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从键盘传递到函数或函数。否则我只需要重写一些(很多)代码。

3 个答案:

答案 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))