在编写代码统计时出现的一个小问题

JohnnyCon 2015-03-05 01:25:50
各位大大们好 在写代码统计过程中出现了如下错误 请各位大大们能帮忙看看 感激不尽 代码在下面
运行时候红色字体那行([b]line = line.trim();)会报错 报错如下
Exception in thread "main" java.lang.NullPointerException
at CountCode.parse(CountCode.java:30)
at CountCode.main(CountCode.java:18)


import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;


public class CountCode {
static long normalLines = 0;
static long commentLines = 0;
static long whiteLines = 0;

public static void main(String[] agrs) {
File f = new File("D:\\test");
File[] codeFiles = f.listFiles();
for(File child : codeFiles) {
if(child.getName().matches(".*\\.java$")) {
parse(child);
}
}
}

private static void parse(File child) {
BufferedReader br = null;
boolean comment = false;
try {
br = new BufferedReader(new FileReader(child));
String line = "";
while((line = br.readLine()) != null); {
[b]line = line.trim();
if(line.matches("^[\\s&&[^\\n]]*$")) {
whiteLines ++;
} else if(line.startsWith("/*") && line.endsWith("*/")) {
commentLines ++;
} 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 {
normalLines ++;
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(br != null) {
try{
br.close();
br = null;
} catch (IOException e) {
e.printStackTrace();
}
}
}


}
}
...全文
98 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoai900525 2015-03-05
  • 打赏
  • 举报
回复
你的while循环条件后面干嘛加个分号,你加了分号就说循环结束了;所以不管你的line是不是为null都会执行下面的代码null.trim()肯定报空指针异常,你把循环条件后面的分号去掉再试试
xiaoai900525 2015-03-05
  • 打赏
  • 举报
回复
引用 2 楼 JohnnyCon 的回复:
引用 1 楼 xiaoai900525 的回复:
你的while循环条件后面干嘛加个分号,你加了分号就说循环结束了;所以不管你的line是不是为null都会执行下面的代码null.trim()肯定报空指针异常,你把循环条件后面的分号去掉再试试
我的天 谢谢你了 昨天晚上弄到很晚 一时间没发现过来 感谢
记得给分啊
JohnnyCon 2015-03-05
  • 打赏
  • 举报
回复
引用 1 楼 xiaoai900525 的回复:
你的while循环条件后面干嘛加个分号,你加了分号就说循环结束了;所以不管你的line是不是为null都会执行下面的代码null.trim()肯定报空指针异常,你把循环条件后面的分号去掉再试试
我的天 谢谢你了 昨天晚上弄到很晚 一时间没发现过来 感谢

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧