Обработка пустой строки в консоли в Java
Пишу кодер и декодер шифра Цезаря. Не могу найти информацию, как сделать так, чтобы человек, оставляя строчку пустой, просто нажимал Enter, и тогда создавался бы файл с определенным именем.
У меня консоль всегда требует ввода хоть чего-нибудь.
System.out.println("Введите ссылку на файл или имя файла, в который вы хотите записать зашифрованный текст"); String linkOut = input.next();
Ответы (1 шт):
Метод Scanner::next игнорирует разделители и считывает непустой токен ДО первого разделителя, по умолчанию к разделителям относятся все пробельные символы, для которых Character::isWhitespace возвращает true, включая и перевод строки \n.
String nonEmptyString = input.next(); // ждёт непустого ввода без пробелов
System.out.println("'" + nonEmptyString + "'");
Если нужно разрешить ввод пустой строки, достаточно использовать метод Scanner::nextLine, который читает всю строку целиком, НЕ включая сам символ перевода строки в конце.
Такая строка может быть пустой или содержать только пробельные символы (разделители) за исключением перевода строки (см. System.lineSeparator).
System.out.println("Введите название файла или нажмите `Enter`, для названия по умолчанию myfile.txt");
String filename = input.nextLine().trim(); // ждёт ввода строки
System.out.println("'" + filename + "'");
if (filename.isEmpty()) {
filename = "myfile.txt";
}