У меня есть метод, который принимает ввод через сканер, форматирует с помощью 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 (), меньше предела ввода. Затем он обрежет его еще дальше, чтобы избежать пустых записей в моей строке []
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;
}
Есть ли более сжатый / эффективный способ сделать это с помощью streams + lamda ( плохо знаком с java 8 * 1008)*) ?. Есть ли способ добавить этот дополнительный шаг в мой поток?