3 пункт не пропускает...
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class Solution {
public static void main(String[] args) throws IOException {
if (args.length == 0) { return; } String arg = args[0];
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
FileInputStream inputStream = new FileInputStream(reader.readLine());
String string = "";
List<String> list = new ArrayList<>();
while (inputStream.available()>0) {
int data = inputStream.read();
string = string + (char) data;
if (data==10 || inputStream.available()<=0) {
list.add(string);
string = "";
}
}
for (int i = 0; i<list.size(); i++) {
if (list.get(i).startsWith(arg+" ")) {
System.out.println(list.get(i));
}
}
reader.close();
inputStream.close();
}
}
Boris
29 уровень
Прошу помощи
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Justinian Judge в Mega City One Master
1 апреля 2020, 19:19
Знать бы еще какой третий пункт, у тех кто активно отвечает в разделе Помощь, нет доступа к условиям задачи и пунктам валидации - поскольку нет подписки. Это так, для информации.
+ старайся форматировать код, выделяешь и нажимаешь кнопку < code >
+ во время работы с кодом в Интеллидж Идее старайся почаще нажимать CTRL + ALT + L, вот я вижу что твой код неформатирован (например - i<list.size(); все слитно), а так быть не должно.
По самому вопросу, этот код ты скопировал с Идеи, через которую и сдавал задачу?
Часто ошибки бывают, если ты с кодом работаешь в одном месте, сдаешь задачу в другом и в процессе копипаста что-то теряется, какие-то важные мелочи затираются или появляется лишнее.
Если сдавал в одном месте - попробуй сдать через другое.
Также лично я убрал бы
программа запускается с одним параметром, если параметра нет, то должно быть исключение - это ненормальная работа программы.
Вспомни, если есть опыт работы с консолью. Если команда (программа) требует входных аргументов а ты запустишь без них, не будет такого:
мол так и нужно. Ну подумаешь без параметров. Нет, программа тебе ругнется "нет параметром, запустите с ключем /help для больше информации " и тд.
Но это уже нюансы.
Также в этой программе нам нужно с файла читать СИМВОЛЬНУЮ информацию. Ты используешь байтовые потоки, и мне не совсем понятно отчего.
Если нам нужно содержимое файла как текст, символы, лучше использовать буфферизированные обертки или символьные потоки. Чтобы вручную там не прописывать, если 10 то вот так, а если другой знак переноса то вот так, а если файл закончится то по другому.
Это усложняет логику. А усложнение логики это питательная среда для ошибок.
+2
Justinian Judge в Mega City One Master
1 апреля 2020, 19:21
можно вот так:
и дальше по строкам читать.
Если не будет проходить валидацию, то попробуй советы вот здесь - убрать return, поменять на буфферед ридер чтение, проверить не ошибка ли копипаста что ты сдаешь посимвольно и внимательно, попробовать сдать в другом месте (браузер, ИДЕ и тд). Не выйдет, и если к тому времени дргие тебе не помогут, может они увидят что, то маякуй и бросай сразу скриншоты с браузера или ИДЕ кода, который ты сдаешь на валидацию. +2
Boris
1 апреля 2020, 20:23
Спасибо большое за помощь.
На счет пунктов понял, что надо писать. На счет того как правильно написать код знаю, тут просто уже психовал чуток и не попровлял его, комбинацию знаю. Да я с кодом работаю в идее а потом копирую просто в бравзер в джавараш.
Думаю дело в ретурне было или просто джавараш хотел построчного считывания)
Вот мой код он прошел:
import java.io.*;
public class Solution_2 {
public static void main(String[] args) throws IOException {
String arg = args[0] + " ";
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String name = reader.readLine();
reader.close();
FileInputStream inputStream = new FileInputStream(name);
BufferedReader readerName = new BufferedReader(new InputStreamReader(inputStream));
String string = "";
while ((string = readerName.readLine()) !=null) {
if (string.startsWith(arg)) {
System.out.println(string);
}
}
inputStream.close();
readerName.close();
}
}
Он отличается от первого только тем что убрал ретурн и построчно сделал.
Спасибо еще раз за помощь и за полезную информацию)
+1
Justinian Judge в Mega City One Master
1 апреля 2020, 20:29
Валидатор точно не хотел построчного чтения, многие подобные варианты (через байтовые потоки) вполне успешно проходили.
Возможно return, возможно ошибка копипаста, очень редко бывают совпадения, что человек работает с кодом в одном месте, сдает в другом, и верный вариант не принимает. В 90%+ это ошибки копипаста, вроде все и так, да не так. Поэтому я и писал о скриншотах, свежий глаз в случае наличия таковых мог бы выявить. Так что будь внимателен, особенно названия классов, пакетов и тд.
Но главное что прошло и то хорошо, успехов!
0