(初学java)一个关于输入输出的题目

tiandi1986 2009-01-09 07:49:31
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这个语句,不知道问题在哪里?帮忙指点一下
...全文
171 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
living10 2009-01-11
  • 打赏
  • 举报
回复
while(ch!=-1){}
这句没有执行
zx8813443 2009-01-10
  • 打赏
  • 举报
回复
楼主可以使用Debug调试器,在程序可能出错的前后分别设置几个断点,然后调试跟踪一下,就知道结果了,这样比问来得结果要强
amo_njupt 2009-01-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 tiandi1986 的回复:]
还有还是使用“ch!=-1”这个语句判断,怎样才能使它不抛出异常???
[/Quote]
LZ的int 数组是已经给定的了,所以它不会在末尾添加-1吧。也期待正确答案。
wolfman09 2009-01-09
  • 打赏
  • 举报
回复
先标记下,想来半天也没想出解决办法,撞墙中……
tiandi1986 2009-01-09
  • 打赏
  • 举报
回复
还有还是使用“ch!=-1”这个语句判断,怎样才能使它不抛出异常???
tiandi1986 2009-01-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wtmiao000 的回复:]
错在这里
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会被执行。
应该懂了吧!
[/Quote]
那读不到了不是返回“-1”吗,它在返回-1的同时也抛出异常吗?
tiandi1986 2009-01-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ahlon 的回复:]
dfin.readInt()会抛出IOException异常
[/Quote]
那为什么下面这段程序不显示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("发生异常");
}
}
}
酒剑仙 2009-01-09
  • 打赏
  • 举报
回复
LS正解
wtmiao000 2009-01-09
  • 打赏
  • 举报
回复
错在这里
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会被执行。
应该懂了吧!
ahlon 2009-01-09
  • 打赏
  • 举报
回复
dfin.readInt()会抛出IOException异常

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧