У меня есть два текстовых файла, один называется «BookDetails.txt», а другой - «CheckOutDetails.txt».
BookDetails.txt содержит следующее содержимое (Название книги: Автор: Издатель: Branch CallЧисло: количество копий)
Книга Java: Джон Доу: Ученый: 985,2 Доу: 25
Мой второй текстовый файл "CheckOutDetails.txt" содержит содержимое (ПервыйИмя: Фамилия: Название книги: Дата: Обновленное количество копий), чтобы текстовый файл был обновлен этой информацией при извлечении определенной книги.Этот текстовый файл содержит посетителя, который проверяет книгу
Это то, что я пытаюсь записать в текстовый файл CheckOutDetails.txt, если одна и та же книга дважды извлекается разным посетителям библиотеки каждый раз
Мэтью: Мэннинг: Java Книга: 26.03.2009: 24
Оливер: Твист: Java Книга: 26.03.2009: 23 [Это число - количество копий, оставленных в каталоге библиотеки. ]
. В настоящее время моя программа может найти конкретную книгу из файла BookDetails.txt, но она не корректно уменьшается.numberOfCopies, когда оно записывается в файл CheckOutDetails.txt
private void jButtonCheckOutActionPerformed(java.awt.event.ActionEvent evt) {
firstName = jTextFieldFirstName.getText();
lastName = jTextFieldLastName.getText();
bookTitle = jTextFieldBookTitle.getText();
checkOutDate = jTextFieldDate.getText();
CheckOut checkOutInfo = new CheckOut(firstName, lastName, bookTitle, checkOutDate);
checkOuts.add(checkOutInfo);
CheckOutCopy();
}
public void CheckOutCopy() //This method works fine
{
try {
File f = new File("BookDetails.txt");
Scanner fileRead = new Scanner(f);
boolean foundTitle = false;
fileRead.nextLine();
while(fileRead.hasNextLine())
{
String textLine = fileRead.nextLine();
String[] bookInfo = textLine.split(" : ");
String tempBookTitle = bookInfo[0];
numberOfCopies = Integer.parseInt(bookInfo[4]);
if(tempBookTitle.trim().equals(bookTitle))
{
foundTitle = true;
break;
}
}
if(foundTitle && numberOfCopies > 0)
{
numberOfCopies--;
WriteCheckOut();
this.setVisible(false);
}
else if(foundTitle && numberOfCopies == 0)
{
if(JOptionPane.showConfirmDialog(null, "Would you like to add the patron to the queue?", "No copies available", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION)
{
AddPatronQueue();
}
else
{
JOptionPane.getRootFrame().dispose();
}
}
else
{
JOptionPanes.messageBox("Book was not found in Library Catalog", "Check Out Error");
}
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}
}
private void AddPatronQueue()
{
//String patronName = jTextFieldFirstName.getText();
//String bookQueue = jTextFieldBookTitle.getText();
}
private void WriteCheckOut()
{
WriteFile wf = new WriteFile("CheckOutDetails.txt");
for(int i = 0; i < checkOuts.size(); i++)
{
CheckOut c = checkOuts.get(i);
String checkOutDetails = c.getFirstName() + " : " + c.getLastName() + " : " + c.getBookTitle() + " : " + c.getCheckOutDate() + " : " + numberOfCopies;
wf.write(checkOutDetails);
}
wf.close();
}
Содержимое файла CheckOutDetails.txt, когда моя программа записывает в него:
Мэтью: Мэннинг: JavaКнига: 27.03.19: 24
Оливер: Твист: Ява Книга: 27.03.19: 24 (должно быть 23, а не 24)