Проблема с уменьшением целочисленной переменной при записи в текстовый файл - PullRequest
0 голосов
/ 28 марта 2019

У меня есть два текстовых файла, один называется «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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...