黑马程序员技术交流社区
标题:
一个IO问题
[打印本页]
作者:
城市儒侠
时间:
2013-12-20 19:55
标题:
一个IO问题
本帖最后由 城市儒侠 于 2013-12-20 21:20 编辑
import java.io.*;
public class Test {
public static void main(String[] args) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
try {
dos.writeDouble(Math.random());
dos.writeBoolean(true);
ByteArrayInputStream bais = new ByteArrayInputStream(
baos.toByteArray());
System.out.println(bais.available());
DataInputStream dis = new DataInputStream(bais);
System.out.println(dis.readBoolean());
System.out.println(dis.readDouble());
dos.close();
dis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
复制代码
我这个代码的作用是:
向内存写了一个随机数,一个boolean。
可是为什么我运行结果,取出的是负数呢?
作者:
代文娟
时间:
2013-12-20 20:23
你把下面这两句话换一下位置,就正确了,因为你先存的double型的又存的boolean型的,而你先读的boolean的又读的double型的,可能是内部读取时产生的错误原因:
dos.writeDouble(Math.random());
dos.writeBoolean(true);
修改的代码如下
public class Test {
public static void main(String[] args) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
try {
dos.writeBoolean(true);
dos.writeDouble(Math.random());
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
System.out.println(bais.available());
DataInputStream dis = new DataInputStream(bais);
System.out.println(dis.readBoolean());
System.out.println(dis.readDouble());
dos.close();
dis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2