我正在尝试从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++;
}
}
}
计算任何文件中的行数,请在下面方法编写并将文件名作为输入传递给下面的方法,它将返回计数。
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();
}
}
得到解决方案尝试下面的代码,它将打印所有多行注释以及文件中找到的多行注释的总行数。
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();
}
}
}
http://ostermiller.org/findcomment.html查看此链接,它将对您有更多帮助。并使用此表达式 => (/*([^]|[\r]|(*+([^/]|[\r])))*+/)|(//.)您可以计算单行和多行的评论!