黑马程序员技术交流社区

标题: 下面代码有问题吗,为什么结果总是不对? [打印本页]

作者: 何竹冬    时间: 2013-1-3 23:23
标题: 下面代码有问题吗,为什么结果总是不对?
import java.io.DataInputStream;
import java.io.IOException;

public class Test {
public static void main(String[] args) throws IOException {
  // TODO Auto-generated method stub
  DataInputStream dis = new DataInputStream(System.in);
  double a = dis.readDouble();
  double b = dis.readDouble();
  System.out.println(a+b);
  dis.close();
}
}
作者: 而今从头越2012    时间: 2013-1-4 10:21
通过查阅API文档,发现这个方法是:从包含的输入流中读取此操作需要的字节;返回的结果为:此输入流的下八个字节,将它们解释为一个 double。
当你输入内容的时候,这个方法readDouble()会读取下八个字节数,根据字节数算,结果肯定会的得到不是你想要的。

不知道你想要个什么结果,如果只是实现输入两个double数,最后得到它们的和值。那么你最好别用这种数据输入流,建议你改成Scanner。
下面有段代码,可以参考一下:
package com.itheima;

import java.io.IOException;
import java.util.Scanner;

/**
* @author XuCheng
*
*/
public class Test{
        public static void main(String[] args) throws IOException{
                Scanner dis = new Scanner(System.in);
                double a = dis.nextDouble();
                double b = dis.nextDouble();
                System.out.println("a + b = " + (a+b));
        }
}




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