`
evget
  • 浏览: 144696 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
文章分类
社区版块
存档分类

DataOuput中readDouble()的问题

DOS 
阅读更多
文章关键字:|DataOuput|readDouble()|问题|数据|读取|打印|

题目要求:想文件t1.txt中写入double型的数据然后在从文件t1.txt中读出并打印。

这本来是很简单的一个程序,可是我在写的时候却遇到了问题。下面是我的代码:

import java.io.*;
class TestDataRead{
   public static void main(String[] args){
    
      DataInputStream dis = null;
      DataOutputStream dos = null;
     
      try{
         dos = new DataOutputStream(new FileOutputStream("t1.txt"));
         dis = new DataInputStream(new FileInputStream(“t1.txt"));
      }catch(FileNotFoundException e){
         System.out.println("文件打开失败");
         System.exit(-1);
      }
    
     double d;
   
     try{       
        for(int i=1; i<3; i++){
           dos.writeDouble((double)(i*10));//向文件中写入9个double型的数据
        }    
         dos.flush();
         dos.close();
        
        while((d=dis.readDouble()) != -1){ //开始从文件中读取数据
          
            System.out.println(d);  //打印出数据
         }
         dis.close();
      }catch(IOException e){
          System.out.println(e);
          e.printStackTrace();
          System.exit(-1);
      }
      }
}

程序结果:
         10.0
         20.0
         java.io.EOFException

这里抛出了一个例外。

查看API关于readDouble()方法的定义:

readDouble
public final double readDouble() throws IOException //参见DataInput的readDouble方法的常规协定。

从包含的输入流中读取此操作需要的字节。

指定者:接口 DataInput 中的 readDouble

返回:此输入流的下八个字节,将它们解释为一个 double。

抛出:

EOFException - 如果此输入流在读取这八个字节之前到达末尾。

IOException - 该流已关闭并且包含的输入流在关闭后不支持读取操作,或者发生其他 I/O 错误。

可以看出若选择用readDouble()每次读出一个double数据,那么所有值都是有效的,所以不可再用返回值来侦测何时结束输入。相反,可用available()方法判断有多少字符可用。故将源代码中的红色部分代码用一下代码替换则可以的到预期效果。
 
   while(dis.available() != 0){
            d = dis.readDouble();
            System.out.println(d);
         }

dis.available()用来判断还有多少字符可供读入。



原文地址:http://www.evget.com/zh-CN/Info/ReadInfo.aspx?id=9195
分享到:
评论

相关推荐

    使用Kotlin语言实现一个简单的命令行计算器

    压缩包文件代码一个使用Kotlin语言实现的实用功能示例,该功能是一个简单的命令行...虽然在这个示例中并没有直接使用这个扩展函数(因为 readDouble 函数已经足够),但它展示了如何在Kotlin中定义和使用扩展函数。

    矩阵连乘java代码

    在这个方法中,作者使用了`readInt`和`readDouble`方法来读取用户输入的矩阵维数和矩阵元素。 结论 这个Java代码展示了如何使用动态规划和递归来解决矩阵连乘的问题。该代码可以作为解决矩阵连乘问题的参考实现。

    实验3 输入输出流的实验.doc

    这些类提供了 readInt()、writeInt()、readDouble()、writeDouble() 等方法,用于读取和写入基本类型的数据。 在实验中,我们使用 DataInputStream 和 DataOutputStream 类来读取和写入文件。首先,我们使用 ...

    java实验六.pdf

    例如,MyInput类中的readInt()和readDouble()是静态方法,可以不创建对象而直接调用。 8. 程序结构:一个Java程序至少包含一个类和一个包含main()方法的类,这是程序的入口点。main()方法是静态的,意味着它可以不...

    C#读取GPSo文件

    在实际应用中,你可能还需要处理数据的编码问题,因为GPS数据可能包含非ASCII字符,例如地理坐标中的度分秒表示。此外,GPS数据通常包含时间戳、海拔、速度等信息,这些都需要根据文件格式进行解析。 对于自定义的....

    C#读写arcgis的Shapefile文件

    - **.dbf**:存储属性数据,类似于关系数据库中的表,与每个几何对象关联。 #### C#中读写Shapefile的关键概念 在C#中处理Shapefile,首先需要理解其内部结构和读写逻辑。以下是一些关键概念: 1. **ESRI_...

    编程语言java实验六.pdf

    MyInput类中的readString、readInt和readDouble方法分别用于读取字符串、整数和双精度浮点数。BufferedReader类被用来从键盘读取一行文本,然后用IOException处理可能出现的异常。 6. 随机数生成与条件判断:在...

    java实验报告1.pdf

    InputStreamReader(System.in)); return Double.parseDouble(buf.readLine()); } 这份实验报告主要涵盖了Java程序设计的基础...通过这样的实践,学生可以更好地理解如何在实际场景中应用理论知识,提高问题解决能力。

    VS2010获取配置文件内容

    这个类提供了一系列的方法,如`WriteString`用于写入字符串,`ReadString`用于读取字符串,`WriteInt`和`ReadInt`用于整型数据,以及`WriteDouble`和`ReadDouble`用于浮点型数据。下面是一个简单的示例,展示如何...

    Java软件开发实战 Java基础与案例开发详解 13-7 数据流 共6页.pdf

    - `public final double readDouble()`:读取一个64位的双精度浮点数。 - `public final short readShort()`:读取一个16位的短整数。 - `public final int readInt()`:读取一个32位的整数。 - `public final long ...

    dwg格式分析

    如,`Readdouble`函数用于读取double类型数据,而`dataReadMC`则可能用于读取可变长度的数据类型。这些代码片段的目的是为了展示如何从二进制文件中提取特定数据类型。 文章中提到的标签“dwg”表明内容重点在于与...

    程序设计算法分析

    这对于理解数据类型的范围以及在处理数值计算时避免溢出等问题尤为重要。 #### 利用SimpleInput类从键盘读取数据 在Java中,从标准输入流(System.in)读取用户输入是一项常见操作。示例代码中定义了一个名为`aaa2`...

    JavaSE程序设计课件:L08-Networking - 1.pdf

    问题描述了一个简单的客户端/服务器示例,其中客户端发送圆的半径,服务器计算并返回圆的面积。客户端通过`Socket`获取输入/输出流,发送半径,然后接收并打印服务器返回的面积。服务器则接收半径,计算面积,然后...

    io流各种组合使用与总结

    在Java中,输入/输出(IO)流是进行数据读取和写入操作的基础。本文将详细介绍Java中IO流的多种组合使用方法,并结合示例代码来阐述每种配置的具体应用。 #### 1. 带缓冲的文件输入 ```java // 1. Buffered input ...

    C# 二进制文件的读写

    2. 数据对齐:如果要读写的结构包含不同大小的数据类型,需要注意字节对齐问题,否则可能无法正确解析数据。 3. 错误处理:在读写过程中,应处理可能出现的异常,如文件不存在、磁盘空间不足等。 4. 流的关闭:...

    C# 二进制流入库源码下载

    1. **二进制读取**:`BinaryReader`类提供了一系列的Read方法,如`ReadInt32()`、`ReadDouble()`等,用于从流中读取特定类型的数据。例如,要读取一个int值,你可以这样使用: ```csharp using System.IO; ...

    C# 计算GPS卫星位置(使用广播星历)

    在IT行业中,GPS(全球定位系统)是一种广泛应用于导航、定位和时间同步的全球卫星导航系统。广播星历是GPS卫星向地球广播的一种数据,它包含了卫星的位置、速度、时间等信息,使得地面接收器可以计算出自身的精确...

    CE_for_lua_英译中.docx

    readBytes() 和 writeBytes() 函数则提供了读写内存字节的能力,readSmallInteger(), readInteger(), readQword(), readPointer(), readFloat(), readDouble(), 以及 readString() 等函数则用于读取不同类型的数值和...

    C#读取二进制文件源程序.zip

    在这个BinaryRWDemo项目中,我们关注的是`BinaryReader`,它提供了读取二进制数据的方法,如`ReadByte()`、`ReadInt32()`、`ReadDouble()`等。 以下是一个简单的二进制文件读取步骤: 1. **创建FileStream对象**:...

Global site tag (gtag.js) - Google Analytics