0

我正在尝试从 java 文件中获取代码行数。但我无法数数。

首先,我尝试用 ifs 跳过它们,但我的想法不起作用。现在我用注释来计算相同的行,我的 Java 文件有这个标题。任何想法,我都被困在如何计算它们上。

我的 if 是用于获取带有注释块的行数。我试图做一个减法。

/*
example
example
*/

int totalLoc = 0;
int difference = 0;
while((line =buff.readLine()) !=null){

    if((line.trim().length() !=0 &&(!line.contains("/*") ||!line.contains("*/")) )){
       if(line.startsWith("/*")){
           difference++;
       }else if(linea.startsWith("*/")){
           difference++;
       }else{
           difference++;
       }
    }
}
4

3 回答 3

2

如果您想计算任何文件中的行数,请在下面的方法中写入并将文件名作为输入传递给下面的方法,它将返回计数。

public int count(String filename) throws IOException
     {
        InputStream is = new BufferedInputStream(new FileInputStream(filename));
        try
        {
            byte[] c = new byte[1024];
            int count = 0;
            int readChars = 0;
            boolean empty = true;
            while ((readChars = is.read(c)) != -1)
            {
                empty = false;
                for (int i = 0; i < readChars; ++i)
                {
                    if (c[i] == '\n')
                        ++count;
                }
            }
            return (count == 0 && !empty) ? 1 : count;
        }
        finally
        {
            is.close();
        }
    }
于 2013-01-30T03:36:52.917 回答
1

得到解决方案尝试下面的代码,它将打印所有多行注释以及在文件中找到的多行注释的总行。

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.nio.MappedByteBuffer;
    import java.nio.channels.FileChannel;
    import java.nio.charset.Charset;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

public class LinesOfCode {
    public static void main(String[] args) {
        try {
            String s = readFile("D:\\src\\SampleClass.java");

            Pattern p = Pattern.compile("/\\*[\\s\\S]*?\\*/");

            Matcher m = p.matcher(s);

            int total = 0;
            while (m.find()) {

                String lines[] = m.group(0).split("\n");
                for (String string : lines) {
                    System.out.println(string);
                    total++;
                }
            }
            System.out.println("Total line for comments = " + total);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static String readFile(String path) throws IOException {
        FileInputStream stream = new FileInputStream(new File(path));
        try {
            FileChannel fc = stream.getChannel();
            MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0,
                    fc.size());
            /* Instead of using default, pass in a decoder. */
            return Charset.defaultCharset().decode(bb).toString();
        } finally {
            stream.close();
        }
    }

}
于 2013-01-30T06:42:16.847 回答
0

http://ostermiller.org/findcomment.html 查看此链接,它将为您提供更多帮助。并通过使用此表达式 => (/*([^ ]|[\r\n]|(*+([^ /]|[\r\n]))) *+/)|(//. )您可以计算单行和多行评论!

于 2013-06-08T06:01:04.170 回答