黑马程序员技术交流社区

标题: 关于高级for循环的一个问题 [打印本页]

作者: 覃宏海    时间: 2012-9-15 11:45
标题: 关于高级for循环的一个问题
本帖最后由 覃宏海 于 2012-9-15 12:09 编辑

毕老师在讲到File的删除文件时用的for循环,同时也说可以用高级for循环来写,所以我就试用了高级for循环,但是出现了问题。
然后我回去看了高级for循环的视频,说高级for循环不能操作,只能遍历。哪么这道题怎么用高级for循环来写呢?


public static void removeDir(File dir){
                File[] files = dir.listFiles();
                for(File x : files){
                        if(files[x].isDirectory())

                                removeDir(files[x]);[/color]------------------------------------->当用高级for的时候这2个方就出问题了
                        else
                                files[x].delete();--------------------------------------->求高手帮忙  用高级for循环应该怎么写?或者我的代码写错了?
            
    }
                dir.delete();
        }
        public static void removeDir1(File dir){
                File[] files = dir.listFiles();
                for(int x=0;x<files[x].length;x++){---------------------------------->这里是普通for循环
                        if(files[x].isDirectory())
                                removeDir1(files[x]);
                        else
                                files[x].delete();
                }
                dir.delete();
        }


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
刚才对比了视频,发现我自己的代码写错了,已做修改,但问题还是没有解决

作者: 马睿    时间: 2012-9-15 12:03
public static void removeDir(File dir){
                File[] files = dir.listFiles();
                for(File x : files){
                        if(files[x].isDirectory())
                                removeDir(files[x]);------------------------------------->当用高级for的时候这2个方就出问题了
                                /*removeDir(files[x]) 改成removeDir(x)  因为 removeDir 传入的是file类,x 本身就是file类,不是索引*/
                        else
                                files[x].delete();--------------------------------------->求高手帮忙  用高级for循环应该怎么写?或者我的代码写错了?
                               /*同样的 x.delete()*/
                }
                dir.delete();
        }
        public static void removeDir1(File dir){
                File[] files = dir.listFiles();
                for(int x=0;x<files[x].length;x++){---------------------------------->这里是普通for循环
                        if(files[x].isDirectory())
                                removeDir1(files[x]);
                        else
                                files[x].delete();
                }
                dir.delete();
        }
作者: 覃宏海    时间: 2012-9-15 12:09
马睿 发表于 2012-9-15 12:03
public static void removeDir(File dir){
                File[] files = dir.listFiles();
             ...

谢了,看来我对高级for的理解错误了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2