BufferedReader просматривает файл, который содержит различные строки , которые все содержат определенный идентификатор (так называемый qdr) .Qdr содержит определенное количество.Эта сумма может быть уменьшена вручную.При уменьшении суммы BufferedReader просматривает файл и проверяет строки, содержащие определенный qdr.
Что нужно сделать, это изменить эту сумму только в первой найденной строке, содержащей этот qdr, и только в том случае, если уменьшена сумма, превышающая указанную сумму конкретной строки (сумма <1),тогда он должен уменьшить эту сумму со следующей строки, которая обозначена тем же самым qdr. </p>
Я надеюсь, что смогу прояснить свои проблемы.Большое спасибо за вашу помощь!
Посредством буферизированного читателя проверяется, содержит ли файл заданный qdr.Если это так, то добавляется заданная сумма к одной из строк.Однако, как вы можете видеть в коде, он делает это со всеми строками, которые содержат этот qdr.Моя идея состоит в том, чтобы действительно идти построчно с циклом и проверять, содержит ли каждая строка этот qdr, и если это не так, то перейти к следующей строке, если это так, посмотреть, будет ли сумма> 0 послеизменяя с новой суммой.Если нет, то найдите следующую строку, содержащую этот qdr, и сделайте то же самое.К сожалению, это то, где я борюсь.
public static void removeDB(String qdr, int amount, String editor, String date) {
File readFile = new File(databaseRead);
File writeFile = new File(databaseWrite);
// creating the line variable to read through lines in while loop
String line = null;
// go through file
try {
// create FileReader which reads the file
FileReader fileReader = new FileReader(readFile);
// wrap the FileReader into BufferedReader
BufferedReader buffRead = new BufferedReader(fileReader);
// FileWriter to write lines into new file
FileWriter writer = new FileWriter(writeFile);
BufferedWriter buffWrite = new BufferedWriter(writer);
// go through all lines
while ((line = buffRead.readLine()) != null) {
if (line.contains(qdr)) {
// set the amount
String blankSpaceAmount = clearOutput.split(", ")[3];
// setting new Amount
int remainingAmount = Integer.parseInt(blankSpaceAmount) - amount;
// if amount is bigger than 0, show qdr in DB with new amount
if (remainingAmount > 0) {
// set the remaining Amount to String to show it in text field in Remove GUI
remAmount = String.valueOf(remainingAmount);
// read line and replace the current amount String with remaining amount String
String amountReplacement = line.replaceAll(blankSpaceAmount, remAmount);
}