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?
Заранее благодарю за любые дельные советы по данному поводу.
любая строка, начинающаяся с // или /* или /** - коммент. любая строка с длинной 0 после замены whitespaces - пустая. отфильтруй считанные строки по этим критериям
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/?
я не буду писать за тебя код) и так подсказал уже достаточно, дальше сам
ок, а по второму вопросу без кода?
тот же ответ
Обсуждают сегодня