Java中DataInputStream的用法

我要用到DataInputStream从控制台读取一个数据(Java的基本数据类型)然后让它去做算术运算。请问怎么实现。注:用readInt()等方法直接读取的话好像行不... 我要用到DataInputStream从控制台读取一个数据(Java的基本数据类型)然后让它去做算术运算。请问怎么实现。注:用readInt()等方法直接读取的话好像行不通我写了一段代码如下(这只是测试代码):import java.io.*;public class Test{ public static void main(String[] args){ DataInputStream dis=new DataInputStream(System.in); long a=0; try{ a=readLong(); } catch(IOException e){ e.printStackTrace(); } System.out.println(a); }}输入12时 输出的结果是 825362957为什么输入与输出不同? 展开
 我来答
娱乐这个feel倍爽儿
推荐于2016-09-24 · 人生如戏,戏如人生 娱百家事,乐万千户
娱乐这个feel倍爽儿
采纳数:47982 获赞数:334160

向TA提问 私信TA
展开全部

1、DataOutputStream:数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中。然后应用程序可以使用数据输入流将数据读入。

2、例子:

/** 
 * 必须先使用DataOutputStream写入数据,然后使用DataInputStream读取数据方可。 
 *  
 * @author 徐越 
 *  
 */  
public class TestClass  
{  
    public static void main(String[] args) throws Exception  
    {  
        TestClass t = new TestClass();  
        t.write();  
        t.read();  
    }  
  
    public void write() throws Exception  
    {  
        String path = this.getClass().getClassLoader().getResource("test.txt").toURI().getPath();  
        OutputStream os = new FileOutputStream(path);  
        DataOutputStream dos = new DataOutputStream(os);  
        dos.writeDouble(Math.random());  
        dos.writeBoolean(true);  
        dos.writeInt(1000);  
        dos.writeInt(2000);  
        dos.flush();  
        os.close();  
        dos.close();  
    }  
  
    public void read() throws Exception  
    {  
        InputStream instream = this.getClass().getClassLoader().getResourceAsStream("test.txt");  
        DataInputStream dis = new DataInputStream(instream);  
        double d = dis.readDouble();  
        boolean b = dis.readBoolean();  
        // 先写的先被读出来  
        int i1 = dis.readInt();  
        int i2 = dis.readInt();  
        instream.close();  
        dis.close();  
        System.out.println(d);  
        System.out.println(b);  
        System.out.println(i1);  
        System.out.println(i2);  
    }  
}

输出结果

0.4683893857027681
true
1000
2000

匿名用户
2013-08-16
展开全部
DataInputStream是字节流,每次读的时候是按二进制的形式读取....既然是控制台程序。。就用Scanner。。那样输入就一样了、、
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
牛青淡浩皛
2019-01-15 · TA获得超过3542个赞
知道大有可为答主
回答量:3010
采纳率:32%
帮助的人:232万
展开全部
楼主我写了一个提取数据,然后保存的代码,你要的是这个意思嘛,参考一下吧
public
static
void
main(String[]
args)
throws
Exception{
DataInputStream
dis=new
DataInputStream(new
FileInputStream("d:\\sql.txt"));
File
file=new
File("d:\\sql.txt");
byte[]
bytes=new
byte[(int)file.length()];
dis.read(bytes);
DataOutputStream
dos=new
DataOutputStream(new
FileOutputStream("d:\\kakabak.txt"));
dos.write(bytes);
dos.flush();
dos.close();
dis.close();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-16
展开全部
import java.io.DataInputStream;
import java.io.IOException;public class mains { /**
* @param args
*/

public static void main(String[] args) {

DataInputStream dis=new DataInputStream(System.in);

String num1="";
String num2="";

try {
System.out.println("请输入第一个数字");

num1 = dis.readLine();
System.out.println("请输入第二个数字");
num2 = dis.readLine();
System.out.println("num1+num2="+(Integer.parseInt(num1)+Integer.parseInt(num2)));
System.out.println("num1*num2="+(Integer.parseInt(num1)*Integer.parseInt(num2)));
System.out.println("num1/num2="+(Integer.parseInt(num1)/Integer.parseInt(num2)));
System.out.println("num1-num2="+(Integer.parseInt(num1)-Integer.parseInt(num2)));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}} 看看测试结果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-16
展开全部
为什么不用Scanner呢?DataInputStream好像是输入流吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式