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);
}
}
} 展开
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);
}
}
} 展开
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()只循环两次,所以读了两次,在此可以看出程序一的问题是数组范围不够大,导致第二次读入覆盖掉第一次的。。。所以结果不一样
执行效果图
展开全部
当然不一样,f.read(b)每读取一个字节,游标自动下移一位, 第一个程序if语句中用了一次,输出语句中又用了一次,相当于读取一个字节游标移动了两次,表现在结果上就是隔一个字节读取一隔字节。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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)
第一个打印的时候,又读了一次。游标向下移动一次
而第二个没有往下读。
System.out.println(new String(b,0,i);
public String(byte[] bytes,
int offset,
int length)
第一个打印的时候,又读了一次。游标向下移动一次
而第二个没有往下读。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个代码数组会越界。。第二个正常的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询