169 похожих чатов

Всем привет, ребята, есть такой вопрос. Задача звучит так: Write a

function count() to count the lines of code in a
Java source file. A line of code is defined as any line in the source
which contains at least one character of executable code. This
excludes comments and whitespace. All input will be valid Java code in
string format.

Я почитал различные примеры из статьи ниже:
https://mkyong.com/java/how-to-get-the-total-number-of-lines-of-a-file-in-java/

но мне не очень понятно, каким образом можно исключить комментарии в моём случае.

На данный момент написал по типу:

public static int count(String text) {
Path path = Paths.get(text);

int lines = 0;
try {
// ignore whitespaces
text = text.replaceAll(" ", "");
// much slower, this task better with sequence access//lines = Files.lines(path).parallel().count();
lines = (int) Files.lines(path).count();

} catch (IOException e) {
e.printStackTrace();
}
return lines;
}

но мне не очень понятно, как здесь же прописать логику для игнорирования комментариев.

глянул пример:
https://stackoverflow.com/a/64959634/8370915

там используется BufferedReader, но у меня на входе:

public static int count(String text) {

Path path = Paths.get(text);

или я неправильно понял подход к решению и мне нужно использовать BufferedReader?

Заранее благодарю за любые дельные советы по данному поводу.

5 ответов

14 просмотров

любая строка, начинающаяся с // или /* или /** - коммент. любая строка с длинной 0 после замены whitespaces - пустая. отфильтруй считанные строки по этим критериям

Nan0- Автор вопроса
Дэни
любая строка, начинающаяся с // или /* или /** - к...

1) то есть, отфильтровать if-aми по типу: if(!currentlyInComment && !line.trim().startsWith("//")){ // Do your algorithmic stuff with line System.out.println(line); } if(line.trim().startsWith("/*") && currentlyInComment) { currentlyInComment = false; } if(line.trim().startsWith("/**") && currentlyInComment) { currentlyInComment = false; } как в примере: https://stackoverflow.com/a/64959634/8370915 ? 2) А по самой задаче предпочтительнее использовать BufferedReader или Path, если основываться на примерах: https://mkyong.com/java/how-to-get-the-total-number-of-lines-of-a-file-in-java/?

Nan0
1) то есть, отфильтровать if-aми по типу: ...

я не буду писать за тебя код) и так подсказал уже достаточно, дальше сам

Nan0- Автор вопроса

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
12
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! procedure TForm1.FormCreate(Sender: TObject); type TStartEnd = record S: Byte; E: Byte; end; var a, b: TStartEnd; begin {1} a.S := 1; {2} a.E := 2; ...
Руслан Михайлович
10
Всем привет!) я тут новенький и пытаюсь освоить evolution методом тыка. У меня при переходе между папками файлов выскакивают вот такие уведомления Можете подсказать как их от...
Диман Samoed
10
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Карта сайта