A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© LSCZ3633 中级黑马   /  2014-2-13 11:22  /  1174 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package com.itheima;
  2. import java.io.*;
  3. public class FileDemo {

  4.         /**
  5.          * @param args
  6.          */
  7.         public static void main(String[] args) {
  8.                 // TODO Auto-generated method stub
  9.                
  10.                 File dir =new File("E:\\java\\基础视频");
  11.                 showDir(dir);
  12.         }
  13.         public static void showDir(File dir){
  14.                 sop(dir);
  15.                 File[] file=dir.listFiles();//
  16.                 for(int x=0;x<=file.length;x++){//获取数组长度
  17.                         if(file[x].isDirectory())//判断是否为目录做为限定条件
  18.                                 showDir(file[x]);//自身调用为递归,
  19.                         else sop(file[x]);
  20.                 }
  21.                
  22.         }
  23.         public static void sop(Object obj){
  24.                 System.out.println(obj);
  25.         }
  26. }
复制代码
大家帮忙看看哪有问题  一直报错

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

8 个回复

倒序浏览
E:\java\基础视频\韩顺平.循序渐进学java从入门到精通\第9讲-类方法.封装.avi
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 94
        at com.itheima.FileDemo.showDir(FileDemo.java:18)
        at com.itheima.FileDemo.showDir(FileDemo.java:19)
        at com.itheima.FileDemo.main(FileDemo.java:12)
这是异常信息  应该怎么修改代码啊
回复 使用道具 举报
   for(int x=0;x<=file.length;x++){//获取数组长度,将标记部分“=”去掉
  1. import java.io.*;
  2. public class FileDemo {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 File dir =new File("E:\\java\\基础视频");
  8.                 showDir(dir);
  9.         }
  10.         public static void showDir(File dir){
  11.                 sop(dir);
  12.                 File[] file=dir.listFiles();//
  13.                 for(int x=0;x<file.length;x++){//获取数组长度
  14.                         if(file[x].isDirectory())//判断是否为目录做为限定条件
  15.                                 showDir(file[x]);//自身调用为递归,
  16.                         else sop(file[x]);
  17.                 }
  18.                
  19.         }
  20.         public static void sop(Object obj){
  21.                 System.out.println(obj);
  22.         }
  23. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
数组越界
回复 使用道具 举报
for(int x=0;x<=file.length;x++){//获取数组长度
这句话导致数组角标越界异常.ArrayIndexOutOfBoundsException
应该是x<file.length

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
恩恩  总算ok了  啥时候多写了个=号呢
回复 使用道具 举报
数组越界了   数组角标从0开始    最大的角标  比长度小一   所以 循环的时候不应该带等号
回复 使用道具 举报
kira 中级黑马 2014-2-13 11:39:17
8#
本帖最后由 kira 于 2014-2-13 11:46 编辑

我这里是显示的空指针了 原因是你还没判断它存不存在
我是这样修改的
  1. import java.io.*;
  2. public class FileDemo {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 // TODO Auto-generated method stub
  8.                
  9.                 File dir =new File("E:\\java\\基础视频");
  10.                 showDir(dir);
  11.         }
  12.         public static void showDir(File dir){
  13.                 if(dir.exists()){//只有存在了才能进行下一步
  14.                 sop(dir);
  15.                 File[] file=dir.listFiles();//
  16.                
  17.                 for(int x=0;x<file.length;x++){// 这里不能等于file.length 因为是从0开始的
  18.                         if(file[x].isDirectory())//判断是否为目录做为限定条件
  19.                                 showDir(file[x]);//自身调用为递归,
  20.                         else sop(file[x]);
  21.                 }
  22.                
  23.         }
  24.                 else{
  25.                     sop("文件不存在");
  26.                     return;
  27.                     
  28.             }
  29.         }
  30.         
  31.         public static void sop(Object obj){
  32.                 System.out.println(obj);
  33.         }
  34. }
复制代码
还有数据越界的问题
回复 使用道具 举报
kira 发表于 2014-2-13 11:39
我这里是显示的空指针了 原因是你还没判断它存不存在
我是这样修改的
还有数据越界的问题 ...

非常感谢!这个问题很重要,因为我是自己直接复制的路径,所以没有错误提示!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马