#java
#java
Вопрос:
Итак, у меня есть программа, которая создает новый файл, но мне нужно, чтобы у него было имя файла по умолчанию, если пользователь ничего не вводил, и мне было интересно, может ли кто-нибудь помочь с этим.
Пока что у меня есть программа, запрашивающая у пользователя имя файла, но я не уверен, что делать, чтобы установить значение по умолчанию для, скажем «output.txt «.
Вот фрагмент моего кода:
//Creates a Scanner Object for keyboard input.
Scanner keyboard = new Scanner(System.in);
//Get the filename.
System.out.print("Enter a filename: ");
filename = keyboard.nextLine();
Ответ №1:
Проверьте, что пользователь ввел в качестве имени файла. Если это пустая строка, используйте имя файла по умолчанию.
Возможно, вы также захотите «обрезать» строку. Имя файла с начальными или конечными пробелами было бы плохой идеей.
Комментарии:
1. Не могли бы вы объяснить, как это сделать?
2. Что нужно объяснить? Это все задачи Java 101. И если вам нужно знать, как их выполнить, то вам следует проконсультироваться с javadocs (для
java.lang.String
), потому что API предоставляет стандартные методы для их выполнения. (И в процессе поиска вы, вероятно, обнаружите другие полезные методы в String API, которые вы можете использовать в других контекстах.)3. Спасибо, как новичок в Java, я демонстративно взгляну.
4. «.. я демонстративно взгляну» — Почему мне вспомнился эскиз Mony Python Black Knight? 🙂
Ответ №2:
Вы должны проверить, является ли строка пустой, что можно сделать с помощью String#isEmpty
в сочетании с String#trim
, из документации:
isEmpty
public boolean isEmpty()
Возвращает true, если и только если
length()
равно 0.
Это означает, что после обрезки для удаления пробелов мы можем проверить, равна ли длина 0. Таким образом, любые входные данные, состоящие только из пробелов, не будут использоваться в качестве имен файлов и будут использоваться по умолчанию, иначе будет использоваться заданное. Вы можете применить это следующим образом:
File file = new File(filename.trim().isEmpty() ? "output.txt" : filename);
try {
file.createNewFile();
} catch(IOException ex) {
//file was not created successfully
}
Это создаст новый File
объект, имя файла которого будет зависеть от того, ввел ли пользователь что-либо (без пробелов). file.createNewFile()
просто создаст файл, если он не существует.
Комментарии:
1. Как бы это собирало данные пользователя, если бы сканер был пользователями раньше?
2. @AndrewLi Я понял это, спасибо. просто нужно было заставить это работать с остальной частью моего кода.
Ответ №3:
Уверен, вам нужно какое-то условие для достижения этого.
Возможно, вам, вероятно, нужен простой метод, подобный этому:
isNotNullOrEmpty(filename) ? filename : defaultFileName;
private static boolean isNotNullOrEmpty(String str) {
return str != null amp;amp; !str.isEmpty();
}