黑马程序员技术交流社区
标题:
程序没有错怎么报异常呢 请教
[打印本页]
作者:
Zenith
时间:
2014-1-4 16:44
标题:
程序没有错怎么报异常呢 请教
Exception in thread "main" java.lang.StackOverflowError
求解释下!
作者:
Zenith
时间:
2014-1-4 16:46
import java.io.File;
//找出E:\MyJava中所有(.java)文件
public class Test {
public static void main(String[] args) {
// 封装目录
File f = new File("E:\\MyJava");
getFile(f);
}
private static void getFile(File f) {
File[] file = f.listFiles();
for (File array : file)
if (array.isDirectory()) {
getFile(f);
} else {
if (array.getName().endsWith(".java")) {
System.out.println(array);
}
}
}
}
刚才没发对 就这个程序运行后报的异常
复制代码
作者:
杨丽静
时间:
2014-1-4 16:54
这是堆栈溢出异常,可能是你写的数据过大,或者递归的时候把方法调用存在堆栈里,反反复复存的太多。你把数据调小一点试试
作者:
高亮亮
时间:
2014-1-4 17:14
你增强for循环的大括号呢?
我觉得这个问题相当严重...没有大括号的辅助定位变量作用域,可能引起的问题状况比较多.
你的增强for循环没有大括号,你认为他能管理的循环体应该到哪里?
我用断点帮你看了下,他其实只默认将下一句代码,
就是你的
if (array.isDirectory()) {
getFile(f);
}
代码作为循环体.所以,后面代码理论上只要前面遇到任意一个文件夹的File对象,就会进入死循环.
希望楼主注意大括号问题.推荐任意时候,不要省略任意大括号,if,else语句的else,括号,等等.
因为Java是强类型语言.希望注重格式.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2