黑马程序员技术交流社区

标题: io问题 [打印本页]

作者: 一步步    时间: 2013-11-12 13:50
标题: io问题
本帖最后由 一步步 于 2013-11-12 18:12 编辑

package twenty_one;
import java.io.*;
public class four {
        public static void main(String[] args)throws IOException {
                //wr();
                rd();
        }
public static void wr()throws IOException
{
        DataOutputStream dos=new DataOutputStream(new FileOutputStream("data.txt"));
        dos.writeInt(233);
        dos.writeDouble(435.978);
        dos.writeBoolean(true);
        dos.close();
}
public static void rd()throws IOException
{
DataInputStream dis=new DataInputStream(new FileInputStream("data.txt"));
int num=dis.readInt();
boolean b=dis.readBoolean();
double d=dis.readDouble();
System.out.println("num="+num+"    "+"double="+d+"     "+"boolean="+b);
dis.close();
}
}

这段代码显示结果为;num=233    double=4.706111111950509E285     boolean=true其中Double的之明显不对啊!谁能看出是哪里错了吗?


作者: 零下五度的水    时间: 2013-11-12 14:18
没错啊, double=4.706111111950509E285  
注意后面那个E285 是自然指数什么乱七八糟的,
因为这个方法调用了Double.longBitsToDouble() 方法, 你可以去查这个的API文档
人家写Java的人要表现他数学牛逼,我们也拦不住啊

作者: 一步步    时间: 2013-11-12 15:01
double应该=435.978才对啊
作者: wjj410830911    时间: 2013-11-12 15:31
  1. import java.io.*;
  2. public class four {
  3.         public static void main(String[] args)throws IOException {
  4.                 wr();
  5.                 rd();
  6.         }
  7. public static void wr()throws IOException
  8. {
  9.         DataOutputStream dos=new DataOutputStream(new FileOutputStream("data.txt"));
  10.         dos.writeInt(233);
  11.         dos.writeDouble(435.978);
  12.         dos.writeBoolean(true);
  13.         dos.close();
  14. }
  15. public static void rd()throws IOException
  16. {
  17. DataInputStream dis=new DataInputStream(new FileInputStream("data.txt"));
  18. int num=dis.readInt();
  19. double d=dis.readDouble();   //你将这2行代码换一下位置
  20. boolean b=dis.readBoolean();//你的位置放反了  JAVA就先用boolean读的double
  21. System.out.println("num="+num+"    "+"double="+d+"     "+"boolean="+b);
  22. dis.close();
  23. }
  24. }
复制代码
这个读写是按顺序来的  你不能随便读




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2