Полагаю, вы просто хотите пересмотреть общий код.Вот мои мысли:
1. Сканер гораздо проще использовать для ввода с консоли, поскольку вы можете указать типы ввода, например nextInt()
.Чтобы инициализировать его, просто используйте
Scanner sc = new Scanner(System.in);
. Вы можете использовать тот же Scanner
для каждого пользовательского ввода в ходе программы.Также не забудьте вызвать Scanner.close()
до выхода из вашей программы.
2.Инициализируйте ваш BufferedReader
следующим образом:
// file is a String variable
BufferedReader in = new BufferedReader(new FileReader(file));
Аналогично, прочитайте файлы следующим образом:
BufferedWriter br = new BufferedWriter(new BufferedReader(file));
3.Чтобы программа работала, попробуйте реализовать блок do-while :
boolean quit = false;
do {
// loop program; when user is finished, set quit = true
} while (!quit)
4.Для условных выражений, основанных на «Пожалуйста, выберите необходимые операции», попробуйте реализовать блок switch .
5.Разделите логику анализа пользовательского ввода и логику работы с адресной книгой, сделав интерфейс консоли отдельным классом, скажем, AddressBookUI
.Когда он запускается, он должен немедленно создать экземпляр класса AddressBookOperations
и вызывать оттуда соответствующие методы на основе пользовательского ввода - AddressBookOperations
должен иметь отдельный метод для каждой операции (это также сделает ваш переключатель довольно коротким),Он также должен иметь следующие переменные private
(но не static
) для хранения имени файла и BufferedRead / Writer.Класс должен иметь конструктор с аргументом String filename
, который инициализирует эти переменные.
6.Удаление определенных строк в файлах довольно сложно в Java.Попробуйте это:
- Создайте
BufferedReader
для файла. - Создайте новый временный файл и создайте для него
BufferedWriter
. - Прочитайтефайл строка за строкой.Для каждой строки, если это не строка, которую вы хотите удалить, запишите ее во временный файл.
- Закройте устройство чтения и записи
- Удалите старый файл
- Переименуйте временный файл в имя файла.