BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #30499同步于 2014/6/16
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

java中遇到两个小问题,为了详细一点,原代码附上

jzhsun01
2014/6/16镜像同步18 回复
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]*$ 完全不知所云啊。。。。。求各位大神指导~~~
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
FromSixToTen机器人#1 · 2014/6/16
确实没定义,就是这样。
jzhsun01机器人#2 · 2014/6/16
请详细一点,我已经给BufferedReader 指定了一个对象啊,为什么那个br在这里就不能用了呢?我不可能再new一个吧,那样就不是同一个实例了。。。。。。 【 在 FromSixToTen 的大作中提到: 】 : 确实没定义,就是这样。
FromSixToTen机器人#3 · 2014/6/16
【 在 jzhsun01 的大作中提到: 】 : 请详细一点,我已经给BufferedReader 指定了一个对象啊,为什么那个br在这里就不能用了呢?我不可能再new一个吧,那样就不是同一个实例了。。。。。。 把定义的变量放到try外边。
renyi机器人#4 · 2014/6/16
偏要这么干的话,把BufferedReader br=null;放try外边吧,lz应该补下基础哈...
jzhsun01机器人#5 · 2014/6/16
介个问题解决了,看来try和catch里面还真是独立的。。。。。。 不过那第二个问题还是存在,表示不明事理。。。。 就是那个运行时会给出错误:Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 12 ^[\s&&[^\n]*$ 着实为难了这个 【 在 FromSixToTen 的大作中提到: 】 : : 把定义的变量放到try外边。
jzhsun01机器人#6 · 2014/6/16
话说对于补基础有什么好建议么?我表示还很小白的感觉。。。 【 在 renyi 的大作中提到: 】 : 偏要这么干的话,把BufferedReader br=null;放try外边吧,lz应该补下基础哈...
FromSixToTen机器人#7 · 2014/6/16
【 在 jzhsun01 的大作中提到: 】 : 话说对于补基础有什么好建议么?我表示还很小白的感觉。。。 什么啊?
xiayu5945机器人#8 · 2014/6/16
如果在catch 中定义,在finally 中使用的话,很有可能发生,在catch开始发生异常导致此变量未定义而在finally 中使用
taoch机器人#9 · 2014/6/17
一般需要在finally中处理的变量都定义成域而不是局部变量。 第二个问题不知道。。看报的错应该是正则表达式的问题…… 【 在 jzhsun01 (书生) 的大作中提到: 】 : 介个问题解决了,看来try和catch里面还真是独立的。。。。。。 : 不过那第二个问题还是存在,表示不明事理。。。。 : 就是那个运行时会给出错误:Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 12 ^[\s&&[^\n]*$ : ...................