import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
public class kk
{ public static void main(String args[])
{
int []grade={55,44,22,33,11};
try
    {
FileOutputStream fout=new FileOutputStream("grade.txt");
DataOutputStream dfout=new DataOutputStream(fout);
    for(int i=0;i<grade.length;i++)
       dfout.writeInt(grade[i]);
       dfout.close();
       
       
        FileInputStream fin=new FileInputStream("grade.txt");
        DataInputStream dfin=new DataInputStream(fin);
  int ch=dfin.readInt();
  while(ch!=-1)
  {
   System.out.print(ch+" ");
  ch=dfin.readInt();
   }
   }
   catch(Exception e)
   {
    System.out.println("出现异常");
    }
}
}
为什么后面还会执行catch这个语句,不知道问题在哪里?帮忙指点一下

解决方案 »

  1.   

    dfin.readInt()会抛出IOException异常
      

  2.   

    错在这里
    while(ch!=-1) 
      { 
      System.out.print(ch+" "); 
      ch=dfin.readInt(); //现在ch是11
      } 
    假设现在ch是11,已经读到最后一个元素了。数组里没有其它的值了。
    本次循环完了,继续下次循环。while判断ch!=-1,因为,现在ch=11所以,继续System.out.print
    然后再ch=dfin.readInt。现在数组里已经没有值了。再读就会出错了。所以,catch会被执行。
    应该懂了吧!
      

  3.   

    那为什么下面这段程序不显示catch部分的代码
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    public class J_Data
    {
    public static void main(String arg[])
    {
    try
    {
    FileOutputStream fout=new FileOutputStream("out.txt");
    DataOutputStream dfout=new DataOutputStream(fout);
    int i;
    for(i=0;i<4;i++)
     dfout.writeInt('0'+i);
     dfout.close();
     
     FileInputStream fin=new FileInputStream("out.txt");
     DataInputStream dfin=new DataInputStream(fin);
     for(i=0;i<4;i++)
     System.out.print(dfin.readInt()+",");
     dfin.close();
      }
      catch(Exception e)
      {
      System.err.println("发生异常");
      }
    }
    }
      

  4.   

    LZ的int 数组是已经给定的了,所以它不会在末尾添加-1吧。也期待正确答案。
      

  5.   

    楼主可以使用Debug调试器,在程序可能出错的前后分别设置几个断点,然后调试跟踪一下,就知道结果了,这样比问来得结果要强
      

  6.   

    while(ch!=-1){} 
    这句没有执行