public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
reader.close();
if (args[0] != null) {
BufferedReader fileReader = new BufferedReader(new FileReader(fileName));
ArrayList<String> list = new ArrayList<>();
String line;
while (fileReader.readLine() != null) {
line = fileReader.readLine();
String id = line.substring(0, 8).trim();
if (args[1].equals(id) && args[0].equals("-d")) {
continue;
}
if (args[1].equals(id) && args[0].equals("-u")) {
line = String.format("%-8s%-30.30s%-8.8s%-4.4s", args[1], args[2], args[3], args[4]);
}
list.add(line);
}
fileReader.close();
BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
for (int i = 0; i < list.size(); i++) {
if (i != 0) writer.newLine();
writer.write(list.get(i));
}
writer.close();
}
}
}Олександр
4 уровень
Господа, подскажите пожалуйста что не так. Код почти идеальный, но из-за какой-то мелочи не проходит валидацию по трём последним пунктам.
Решен
Комментарии (8)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
DimaExpert
2 октября 2019, 06:23
Если в цикле while считывается последняя строка, то что будет в line?
0
ОлександрExpert
2 октября 2019, 08:17
Не совсем понял вопрос - если Вы о 13-й строчке, то там я читаю строку и присваиваю её в переменную line. Следовательно, если в цикле while считывается последняя строка, то она и будет находиться в переменной line.
0
DimaExpert
2 октября 2019, 08:21
Если в цикле while считывается последняя строка, то в line Вы считываете следующую строку, а её нет
0
ОлександрExpert
2 октября 2019, 08:36
То есть присваивать значение переменной line нужно в условии while?:
0
DimaExpert
2 октября 2019, 08:37
Как вариант, но лучше в цикле проверять так - fileReader.ready()
0
hidden #598481
2 октября 2019, 08:49полезный
Как альтернативу можно делать через стрим .lines() и вообще не морочиться с тем, где же происходит считывание строк:
+1
ОлександрExpert
2 октября 2019, 08:53
Понял, спасибо за помощь.
0
IceBergMaster
2 октября 2019, 09:13
Спорно, такое использование ready() кажется необоснованным, один блок и цикл завершится независимо от наличия содержимого. Ну это если говорить и постоянном использовании такого подхода в полевых условиях.
0