我想计算一个程序中的代码行数,并且我已经编写了代码来计算;
的数量。它工作正常,但在某些情况下(如;
和if
语句不存在)。在这种情况下,我将一些关键字存储在一个字符串数组中,我想使用while
搜索该关键字。如果它工作正常,那么我将它增加1,但它不起作用。我已经尝试了很多,但它根本没有工作,它显示了异常。作为readLine()
,您可以使用自己的代码。
Classdetect1.java
Demo.java
答案 0 :(得分:0)
在Java中,所有语句都以;
或{
}
内的块结束。一些例子:
System.out.println("One statement");
while (str.equals("One block of statements + one statement"))
{
System.out.println("One statement");
}
此外,;
根本不需要在同一行:
System.out.println(
"One statement"
);
所以你可以简单地计算所有;
(一个语句的结尾)和所有{
(一个语句的结尾,一个块的开头),它将相当准确。
if (true)
{ // One statement ending with '{'
doSomething(); // One statement ending with ';'
while (false)
{ // One statement ending with '{'
doSomethingElse(); // One statement ending with ';'
}
}
// 4 statements in total.
当然,有(一如既往)一些例外:
if (true) doSomething(); // One statement, or two?
do { doSomething(); } while (true); // Three statements, or two?
答案 1 :(得分:0)
试试这个:
BufferedReader br = new BufferedReader(new FileReader(new File("C:/lines.txt")));
String s = "";
String text = "";
//save all the file in a string
while ((s = br.readLine()) != null) {
text += s + "\n";
}
//remove empty lines with a regex
String withoutEmptyLines = text.replaceAll("(?m)^[ \t]*\r?\n", "");
//lines of code = text with newline characters length - text without newline characters length
int linesOfCode = withoutEmptyLines.length() - withoutEmptyLines.replaceAll("\n", "").length();
System.out.println("Lines: "+linesOfCode);
我的C:/lines.txt
文件:
01. a
02.
03. b
04. c
05. c
06. d
07. as
08. d
09. asd
10. asd
11. a
12.
13.
14.
15. asd
16.
17. asd
18.
19.
20.
21. asdasd
22.
23.
24.
使用此文件,输出为:
Lines: 13
希望这有帮助