java为什么输出的结果的不一样???????? 5

importjava.io.*;publicclassDome09{publicstaticvoidmain(String[]args)throwsIOException... import java.io.*;
public class Dome09
{
public static void main(String[] args)
throws IOException

{
FileInputStream f = new FileInputStream("Dome09.java");
byte[] b = new byte[256];
while (f.read(b) > 0)
{
System.out.println(new String(b,0,f.read(b)));
}
}
}

import java.io.*;
public class Dome09
{
public static void main(String[] args)
throws IOException

{
FileInputStream f = new FileInputStream("Dome09.java");
byte[] b = new byte[256];
int i = 0;
while ((i = f.read(b)) > 0)
{
System.out.println(new String(b,0,i);
}
}
}
展开
 我来答
鹏丶鹏丶
2012-07-31
知道答主
回答量:21
采纳率:0%
帮助的人:8.4万
展开全部

import java.io.*;

public class Dome09

{

 public static void main(String[] args)

  throws IOException 

 {

  FileInputStream f = new FileInputStream("Dome09.java");

   byte[] b = new byte[256];

  int i=1,j=0;

  while ((j=f.read(b)) > 0)

  {

   System.out.println("测试发现循环第"+i+"次!");

   i++;

   System.out.println(new String(b,0,j));

  }

 }

}

经过对程序二稍微调整修改,发现程序二执行了两次,即while()只循环两次,所以读了两次,在此可以看出程序一的问题是数组范围不够大,导致第二次读入覆盖掉第一次的。。。所以结果不一样

 

 

执行效果图

 

 


 

子腾887
2012-07-29
知道答主
回答量:7
采纳率:0%
帮助的人:5866
展开全部
当然不一样,f.read(b)每读取一个字节,游标自动下移一位, 第一个程序if语句中用了一次,输出语句中又用了一次,相当于读取一个字节游标移动了两次,表现在结果上就是隔一个字节读取一隔字节。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
等待III希望
2012-07-29 · TA获得超过161个赞
知道小有建树答主
回答量:163
采纳率:0%
帮助的人:124万
展开全部
System.out.println(new String(b,0,f.read(b)));
System.out.println(new String(b,0,i);

public String(byte[] bytes,
int offset,
int length)
第一个打印的时候,又读了一次。游标向下移动一次
而第二个没有往下读。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhanwenshu
2012-07-29
知道答主
回答量:3
采纳率:0%
帮助的人:4707
展开全部
第一个代码数组会越界。。第二个正常的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式