java—有没有其他方法可以用来读取代码中的行来执行readline()函数?

3npbholx  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(310)

我正在编写一个代码来计算代码行数,除了注解和空行,但是我仍然停留在如何使用readline()方法来代替text变量,因为它只用于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()与i不相关,因为它给出了一个错误,我已经编写了commentbegind()、commentend()和issourcecodeline()方法的完整代码。我只需要解决readline()方法的问题。

icnyk63a

icnyk63a1#

我的建议是识别循环之前的线路,并改变其机制:

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
    }

}

分裂 textline.separator 将返回其中的所有行,存储在 array . 迭代它并使用您自己的逻辑。

相关问题