• ,

level17.lesson10.home09

Ребят, просто уже не могу дальше долбится с этой задачей.Ну что не так? Про то, что в условии сказано про транзакционность, которой нет, я вообще молчу. Спасибо за помощь заранее.
* Транзакционность
Сделать метод joinData транзакционным, т.е. если произошел сбой, то данные не должны быть изменены.
1. Считать с консоли 2 имени файла
2. Считать построчно данные из файлов. Из первого файла - в allLines, из второго - в forRemoveLines
В методе joinData:
3. Если список allLines содержит все строки из forRemoveLines, то удалить из списка allLines все строки, которые есть в forRemoveLines
4. Если список allLines НЕ содержит каких-либо строк, которые есть в forRemoveLines, то
4.1. очистить allLines от данных
4.2. выбросить исключение CorruptedDataException
Метод joinData должен вызываться в main. Все исключения обработайте в методе main.
*/

public class Solution {
    public static List<String> allLines = new ArrayList<String>();
    public static List<String> forRemoveLines = new ArrayList<String>();

    public static void main(String[] args) throws IOException{
        String fileName1, fileName2;
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        fileName1 = reader.readLine();
        fileName2 = reader.readLine();


        BufferedReader reader1=new BufferedReader(new FileReader(fileName1));
        BufferedReader reader2=new BufferedReader(new FileReader(fileName1));

        while(reader1.readLine() !=null){
            allLines.add(reader1.readLine());
        }
        while(reader2.readLine() !=null){
            forRemoveLines.add(reader1.readLine());
        }

        try
        {
            new Solution().joinData();
        }catch (Exception e){

        }
    }
    public void joinData () throws CorruptedDataException
    {
        if (allLines.containsAll(forRemoveLines))
        {
            allLines.removeAll(forRemoveLines);
        } else
        {
            allLines.clear();
            throw new CorruptedDataException();
        }
    }
}

3 комментария

Nullptr
  • Nullptr
  • 0
  • Комментарий отредактирован 2017-01-09 12:04:17 пользователем Nullptr
«Метод joinData должен вызываться в main. Все исключения обработайте в методе main.» — не выполняется. main кидает IOException, обработай его в теле метода. + ты не закрываешь потоки reader, reader1, reader2.
+

        try
        {
            new Solution().joinData();
        }catch (Exception e){

        }

Exception перехватывает любые исключения и ты не понимаешь, что именно произошло не так. Лучше для каждого потенциального эксепшена сделать свой catch-блок, в данном случае вместо Exception — CorruptedDataException.
Ening
Добавил такое, всё равно не проходит.Может что-то ещё?
try
        {
            new Solution().joinData();
        }catch (CorruptedDataException e){

        }catch (IOException e){
            
        }
        reader.close();
        reader1.close();
        reader2.close();
maximuswork
Добавь return после первой проверки на вхождение.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.