Есть ли какой-либо другой метод, который я могу использовать для чтения строк в моем коде для выполнения функции readLine()?

Я пишу код для подсчета строк кода, за исключением комментариев и пустых строк, но я застрял на том, что использовать вместо метода readLine() с текстовой переменной, поскольку он используется только с классом BufferedReader. Я не хочу использовать BufferedReader. Я хочу, чтобы он оставался строкой. Что я могу сделать, чтобы решить эту проблему?

public static int count(String text) {

        int count = 0;
        boolean commentBegan = false;
        String line = null;

        while ((line = text.readLine()) != null) {
            line = line.trim();
            if ("".equals(line) || line.startsWith("//")) {
                continue;
            }
            if (commentBegan) {
                if (commentEnded(line)) {
                    line = line.substring(line.indexOf("*/") + 2).trim();
                    commentBegan = false;
                    if ("".equals(line) || line.startsWith("//")) {
                        continue;
                    }
                } else
                    continue;
            }
            if (isSourceCodeLine(line)) {
                count++;
            }
            if (commentBegan(line)) {
                commentBegan = true;
            }
        }
        return count;
    }
private static boolean commentBegan(String line) {}
private static boolean commentEnded(String line) {}
private static boolean isSourceCodeLine(String line) {}

Text.readLine(), который я написал выше, не коррелирует с тем, что я должен сделать, поскольку он дает ошибку, я написал полный код для методов commentBegan(), commentEnd() и isSourceCodeLine(). Все, что мне нужно, это решить проблему метода readLine().

Подсчитайте количество новых строк, это должно дать вам ответ, верно?

cs95 25.12.2020 21:33

Да. Это именно то, чего я хочу добиться.

Abubakar Oluyinka 25.12.2020 22:26
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
122
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мое предложение состоит в том, чтобы идентифицировать строки перед циклом и изменить его механизм:

public static int count(String text) {

    int count = 0;
    boolean commentBegan = false;
    String[] lines = text.split(System.getProperty("line.separator"));

    for (String line:lines) {
        //your logic here
    }

}

Разделение text на line.separator вернет все строки внутри него, хранящиеся в array. Переберите его и используйте свою собственную логику.

Другие вопросы по теме