I cannot figure out the bug in this one for the infinite loop. Is my logic to pass this task correct? Please help :)
package com.codegym.task.task17.task1721;
import java.util.ArrayList;
import java.util.List;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
/*
Transactionality
*/
public class Solution {
public static List<String> allLines = new ArrayList<>();
public static List<String> linesForRemoval = new ArrayList<>();
public static void main(String[] args) throws IOException {
BufferedReader fileNameReader = new BufferedReader(new InputStreamReader(System.in));
String fileName1 = fileNameReader.readLine();
String fileName2 = fileNameReader.readLine();
BufferedReader reader1;
BufferedReader reader2;
reader1 = new BufferedReader(new FileReader(fileName1));
String line1 = reader1.readLine();
while(line1 != null) {
allLines.add(line1);
}
reader2 = new BufferedReader(new FileReader(fileName2));
String line2 = reader2.readLine();
while(line2 != null) {
linesForRemoval.add(line2);
}
Solution s = new Solution();
s.joinData();
}
public void joinData() throws CorruptedDataException {
int availableCount = 0;
for (int i = 0; i < linesForRemoval.size(); i++) {
for (int j = 0; j < allLines.size(); j++) {
if (allLines.get(j).equals(linesForRemoval.get(i)))
availableCount++;
}
}
if (availableCount != linesForRemoval.size()) {
allLines.clear();
throw new CorruptedDataException();
} else {
for (int i = 0; i < linesForRemoval.size(); i ++) {
for (int j = 0; j < allLines.size(); j++) {
if (allLines.get(j).equals(linesForRemoval.get(i)))
allLines.remove(allLines.get(j));
}
}
}
}
}