黑马程序员技术交流社区

标题: java数组 [打印本页]

作者: 赵嘉男    时间: 2012-4-26 23:45
标题: java数组
import java.io.*;
public class app10
{
  public static void main(String args[])throws Exception
{String str=new String();
  try{InputStreamReader isr=new InputStreamReader(System.in);
      BufferedReader in=new BufferedReader(isr);
      String sdir="F:\\c";
      String sfile;
      File Fdir1=new File(sdir);
      if(Fdir1.exists()&&Fdir1.isDirectory())
       {
         System.out.println("目录:"+sdir+"已经存在");
         for(int i=0;i<=Fdir1.list().length;i++)
          System.out.println((Fdir1.list())[i]);
          File Fdir2=new File("F:\\c\\k");
          if(!Fdir2.exists())
          Fdir2.mkdir();
         System.out.println();
         System.out.println("建立新目录后的文件列表");
         for(int i=0;i<=Fdir1.list().length;i++)
         System.out.println((Fdir1.list())[i]);         
       }
      System.out.println("请输入该目录的一个文件名");
      sfile=in.readLine();
      File Ffile=new File(Fdir1,sfile);
      if(Ffile.isFile())
      {System.out.print("文件名:"+Ffile.getName());
       System.out.print(";所在目录:"+Ffile.getPath());
       System.out.println(";文件大小:"+Ffile.length()+"字节");
       }
       }
   catch(IOException e)
   { System.out.println(e.toString());
    }
    catch(ArrayIndexOutOfBoundsException e)
    {System.out.println("错误");}
}
}
F盘里面有c文件,c文件里面a.txt和d文件,d文件里面有b.txt,怎么一打印就出错呢
作者: 杨志    时间: 2012-4-27 00:05
兄弟!我想我该提醒你点东西!
你这个错误是因为这句话:
for(int i=0;i<=Fdir1.list().length;i++)
这里总共两处的等号是不要的!如果要这个等号就是越界了!
如果你把异常输出的话:
java.lang.ArrayIndexOutOfBoundsException: 2
        at com.test.app10.main(app10.java:17)
很明显是数组越界。而你选择了答应硬编码。这样就看不到异常了。
还有个东西就是你的这个代码中最好是类名的第一个字母大写。
这个是最基本的。一般类名的第一个字母是要求大写。
个人一点小建议!谢谢!
作者: chenwei    时间: 2012-4-27 00:07
for(int i=0;i<=Fdir1.list().length;i++)
   System.out.println((Fdir1.list())[i]);

每次都是i<=Fdir1.list().length
length是list的长度,
当i=Fdir1.list().length,就数组索引越界了,就打印错误
改为i<Fdir1.list().length




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