Я строю утилиту cli, в которой я должен запрашивать ввод у пользователя из динамически сгенерированного набора параметров. Для этого sh у нас есть список строк, и мы создаем HashMap из (пары значений ключа имени параметра и значения, предоставленного из ввода cli).
Вот рабочий пример:
public class ConfigBuilderApplication {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("parameterOne");
list.add("parameterTwo");
list.add("parameterThree");
promptForParameterInput(list);
}
public static HashMap<String, String> promptForParameterInput(List<String> parameters) {
System.out.println("There are " + parameters.size() + " parameters to designate.");
HashMap<String, String> map = new HashMap<>();
parameters.forEach(parameter -> {
System.out.println("provide a value for " + parameter + ": ");
InputStreamReader reader = new InputStreamReader(System.in);
BufferedReader bufferedReader = new BufferedReader(reader);
String input = null;
try {
input = bufferedReader.readLine();
} catch (IOException e) {
e.printStackTrace();
}
map.put(parameter, input);
});
System.out.println(map);
return map;
}
}
сейчас - когда я запускаю приложение, оно запрашивает у меня параметрOne, и я ввожу значение, но когда я нажимаю return, это не заставляет приложение двигаться вперед - я должен нажать return во второй раз. Тогда все остальные параметры, кажется, работают правильно: меня спрашивают в cli значение параметра, я предоставляю значение, и оно переходит к следующему параметру.
Вот пример вывода cli:
There are 3 parameters to designate.
provide a value for parameterOne:
test
provide a value for parameterTwo:
value
provide a value for parameterThree:
provided
{parameterOne=, parameterThree=provided, parameterTwo=value}
Я уже потратил слишком много времени на эту простую проблему - надеясь, что кто-то уже сталкивался с этим и знает ответ:)
Спасибо, Джефф