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))
好的,首先:您好!
我会做空
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))