Может кто? объяснить
3. Если список allLines содержит все строки из forRemoveLines, то удалить из списка allLines все строки, которые есть в forRemoveLines.
4. Если условие из п.3 не выполнено, то:
4.1. очистить allLines от данных
Viktor Ustenko
24 уровень
Всем привет!
Решен
Комментарии (7)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Viktor Ustenko
3 апреля 2020, 08:13
Программа должна считывать построчно данные из первого файла в список allLines. = Это как?
Так что не подходит??
String f;
BufferedReader reader1 = new BufferedReader(new FileReader(nameFile));
while ((f = reader1.readLine()) != null) {
arrayList.add(f);
}
0
ГоффMaster
3 апреля 2020, 06:46
Возможно подразумевается вот что.
У тебя есть список олллайнс из пяти строк и список форремувлайнс из трёх.
а) каждая из трёх строк форремувлайнс также присутствует и в олл лайнс - надо удалить эти три сторки из алл лайнс.
б) хотя бы одна строка из форемувлайнс отсутствует в олллайнс - удалить все строки из олллайнс.
Не спрашивай, зачем.
0
Viktor Ustenko
3 апреля 2020, 06:49
😂
0
Viktor Ustenko
3 апреля 2020, 06:54
Почему валидатор пишет ошибку?? =
(Убедись, что класс Solution содержит метод joinData() без параметров) ?????????????? Этого не было в требованиях😬
код:
try {
new Solution().joinData(readFile(firstFile, allLines), readFile(secondFile, forRemoveLines));
} catch (CorruptedDataException e) {
e.printStackTrace();
}
}
public void joinData(List one, List two) throws CorruptedDataException {
ArrayList<Integer> list = new ArrayList<>();
int t = 0;
for (int i = 0; i < one.size(); i++) {
for (int j = 0; j < two.size(); j++) {
if (one.get(i).equals(two.get(j))) {
System.out.println(one.get(0));
t++;
list.add(i);
}
}
}
if (one.size() == t) {
for (int i = list.size()-1; i >= 0; i--) {
one.remove(list.get(i));
}
} else {
one.removeAll(one.subList(0, one.size()));
}
}
public static List readFile(String nameFile, List arrayList) {
try {
String f;
BufferedReader reader1 = new BufferedReader(new FileReader(nameFile));
while ((f = reader1.readLine()) != null) {
arrayList.add(f);
}
} catch (IOException e) {
e.printStackTrace();
}
return arrayList;
}
}
0
ГоффMaster
3 апреля 2020, 07:01
я не помню, что было, а что не было в требованиях. Ты же не приложил саму задачу )
0
Dmytro Tretiakov
3 апреля 2020, 07:06полезный
Считай просто данные в отдельные файлы и используй joinData(), чтобы обработать условие задачи, без жёсткой привязки к этим файлам в качестве параметров. В условии также не указано, что тебе стоит использовать joinData() c параметрами.
+1
Viktor Ustenko
3 апреля 2020, 08:05
Транзакционность
Сделать метод joinData транзакционным, т.е. если произошел сбой, то данные не должны быть изменены.
1. Считать с консоли 2 имени файла.
2. Считать построчно данные из файлов. Из первого файла - в allLines, из второго - в forRemoveLines.
В методе joinData:
3. Если список allLines содержит все строки из forRemoveLines, то удалить из списка allLines все строки, которые есть в forRemoveLines.
4. Если условие из п.3 не выполнено, то:
4.1. очистить allLines от данных
4.2. выбросить исключение CorruptedDataException
Метод joinData должен вызываться в main. Все исключения обработайте в методе main.
Не забудь закрыть потоки.
Требования:
1. Класс Solution должен содержать public static поле allLines типа List<String>.
2. Класс Solution должен содержать public static поле forRemoveLines типа List<String>.
3. Класс Solution должен содержать public void метод joinData() который может бросать исключение CorruptedDataException.
4. Программа должна считывать c консоли имена двух файлов.
5. Программа должна считывать построчно данные из первого файла в список allLines.
6. Программа должна считывать построчно данные из второго файла в список forRemoveLines.
7. Метод joinData должен удалить в списке allLines все строки из списка forRemoveLines, если в allLines содержаться все строки из списка forRemoveLines.
8. Метод joinData должен очистить список allLines и выбросить исключение CorruptedDataException, если в allLines не содержаться все строки из списка forRemoveLines.
9. Метод joinData должен вызываться в main.
0