【发布时间】:2019-10-25 12:40:25
【问题描述】:
我有一个方法,它通过扫描仪获取输入,使用 toUpperCase 格式化并在空格上拆分。 它还需要输入限制。所以只有前 N 个单词会出现在输出的数组中。
public String[] getMultiLineInput(int inputLimit)
String[] input = Arrays.stream(scanner.nextLine().toUpperCase().split("\\s+"))
.limit(inputLimit)
.toArray(size -> new String[inputLimit]);
return input;
}
我的方法按预期工作,但是我现在想添加一个附加条件。如果scanner.nextline() 检索到的字符串小于输入限制。然后它会进一步修剪它以避免我的 String[] 中的 NULL 条目
public String[] getMultiLineInput(int inputLimit){
System.out.println("> ");
String[] input = Arrays.stream(scanner.nextLine().toUpperCase().split("\\s+"))
.limit(inputLimit)
.toArray(size -> new String[inputLimit]);
ArrayList<String> temp = new ArrayList<>();
for ( String word : input){
if ( word != null){
temp.add(word);
}
}
String [] trimmedarray = temp.toArray(new String[temp.size()]);
return trimmedarray;
}
有没有更简洁/有效的方式来使用流 + lamda(java 8 的新手)?有没有办法将此额外步骤包含在我的流中?。
【问题讨论】:
-
如果scanner.nextline()检索到的String小于输入限制,是什么意思。?您在上面的代码中没有任何条件地删除 null
标签: java arrays lambda syntax java-stream