返回信息流import java.io.*;
public class CodeCounter
{
static long normalLines=0;
static long commentLines=0;
static long WhiteLines=0;
public static void main(String args[])
{
File file=new File("E:\\安卓开发\\workspace\\工作量测试/src");
File [] codeFiles=file.listFiles();
for(File child: codeFiles)
{
if(child.getName().matches(".*\\.java$"))
parse(child);
}
System.out.println("有效代码量为:"+normalLines);
System.out.println("注释行代码量为:"+commentLines);
System.out.println("空白行代码量为:"+WhiteLines);
}
private static void parse(File file){
try{ BufferedReader br=null;
FileReader fr=new FileReader(file);
br=new BufferedReader(fr);
String line="";
boolean comment=false;
while ((line=br.readLine())!=null)
{
line=line.trim();
if(line.matches("^[\\s&&[^\\n]*$"))
{
WhiteLines++;
}
else if (line.startsWith("/*")&&!line.endsWith("*/"))
{
commentLines++;
comment=true ;
}
else if(comment==true)
{
commentLines++;
if(line.endsWith("*/"))
comment=false;
}
else if (line.startsWith("//"))
{
commentLines++;
}
else if (line.startsWith("/*")&&line.endsWith("*/"))
{
commentLines++;
}
else normalLines++;
}
// fr.close();
// br.close();
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
finally{
if(br!=null)
{
try{br.close();br=null;}
catch(IOException e){e.printStackTrace();}
}
}
}
}
完整代码就是这样的,但是finally里面的br编译器说没有定义,表示不理解,try里面的难道和catch里面的还是独立的吗?
我将整个finally注释掉后,将文件关闭放在了try的尾巴上,但此时仍然不通过,告诉我这么一句话:Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 12 ^[\s&&[^\n]*$
完全不知所云啊。。。。。求各位大神指导~~~
这是一条镜像帖。来源:北邮人论坛 / java / #30499同步于 2014/6/16
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
java中遇到两个小问题,为了详细一点,原代码附上
jzhsun01
2014/6/16镜像同步18 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
请详细一点,我已经给BufferedReader 指定了一个对象啊,为什么那个br在这里就不能用了呢?我不可能再new一个吧,那样就不是同一个实例了。。。。。。
【 在 FromSixToTen 的大作中提到: 】
: 确实没定义,就是这样。
【 在 jzhsun01 的大作中提到: 】
: 请详细一点,我已经给BufferedReader 指定了一个对象啊,为什么那个br在这里就不能用了呢?我不可能再new一个吧,那样就不是同一个实例了。。。。。。
把定义的变量放到try外边。
介个问题解决了,看来try和catch里面还真是独立的。。。。。。
不过那第二个问题还是存在,表示不明事理。。。。
就是那个运行时会给出错误:Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 12 ^[\s&&[^\n]*$
着实为难了这个
【 在 FromSixToTen 的大作中提到: 】
:
: 把定义的变量放到try外边。
话说对于补基础有什么好建议么?我表示还很小白的感觉。。。
【 在 renyi 的大作中提到: 】
: 偏要这么干的话,把BufferedReader br=null;放try外边吧,lz应该补下基础哈...
一般需要在finally中处理的变量都定义成域而不是局部变量。
第二个问题不知道。。看报的错应该是正则表达式的问题……
【 在 jzhsun01 (书生) 的大作中提到: 】
: 介个问题解决了,看来try和catch里面还真是独立的。。。。。。
: 不过那第二个问题还是存在,表示不明事理。。。。
: 就是那个运行时会给出错误:Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 12 ^[\s&&[^\n]*$
: ...................