public boolean checkChildren(User user, Folder folder) { boolean b = false;
// 判断有没有文件,如果有则将b设为true
List<FileList> fileList = this.getChildFile(user, folder.getFileid());
if (fileList.size() > 0) {
b = true; }
List<Folder> folderList = this.getChildFolder(user, folder.getFileid());
if (folderList.size() > 0) {
for (int i = 0; i < folderList.size(); i++) {
// 如果b为true,则跳出循环,返回true
if (b == true) {
break;
}
checkChildren(user, folderList.get(i));
}
}

return b;当b=true的时候,虽然执行return b语句,但是还是继续走for循环,请问是为什么

解决方案 »

  1.   

    首先感觉if (b == true)这句代码有些怪怪的,b是boolean型变量,所以可以直接写成if (b),这样看着舒服很多吧!
      

  2.   

    因为有一个循环在执行checkChildren(user, folderList.get(i));
      

  3.   

    这你是个递归的 for循环 不知道为什么写成这样如果你真的要在b 为true 返回的话 可以直接用 return
      

  4.   

    你的问题应该是递归引起的,我举个例子来说,假设第一次执行你的checkChildren方法,执行到for的时候b为false,那么就会调用自己,在这次调用的时候b为true,那么执行到for的时候会退出循环,执行return b;返回后继续回到第一次执行时的状态,也就是说还在走for循环。
      

  5.   

    谢谢大家,我找到问题根源了,原本想当b=true时跳出for循环,其实在for循环的if判断语句后改为
    return checkChildren(user, folderList.get(i));就好了