首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Java语言将.dat文件读入数组

用Java语言将.dat文件读入数组
EN

Stack Overflow用户
提问于 2014-04-18 03:30:55
回答 3查看 32K关注 0票数 1

我正在编写的代码有两个类: writeInts和readInts。我编写了writeInts来随机生成100个介于0和1000之间的数字,并将它们输出到一个data.dat文件。

readInts应该打开一个DataInputStream对象,从data.dat文件中读取“原始”数据,并将这100个整数存储在一个数组中。我的问题是我似乎不能正确地读取数据。在这方面的任何帮助都将非常感谢。谢谢!

writeInts:

代码语言:javascript
运行
复制
import java.io.*;


public class WriteInts {
    public static void main(String[] args) throws IOException {
        DataOutputStream output = new DataOutputStream(new FileOutputStream("data.dat"));
        int num = 0 + (int)(Math.random());
        int[] counts = new int[100];
        for(int i=0; i<100; i++) {
            output.writeInt(num);
            counts[i] += num;

            System.out.println(num);
        }
        output.close();
    }

}

readInts:

代码语言:javascript
运行
复制
import java.io.*;
import java.util.*;

public class ReadInts {
    public static void main(String[] args) throws IOException {

        // call the file to read
        Scanner scanner = new Scanner(new File("data.dat"));
        int[] data = new int[100];
        int i = 0;
        while (scanner.hasNextInt()) {
            data[i++] = scanner.nextInt();

            System.out.println(data[i]);

            scanner.close();
        }

    }

}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-18 04:00:53

如果您想编写二进制数据流,请使用/DataOutputStream。是用于text data Scanner的,您不能混合使用它。

WriteInts:

代码语言:javascript
运行
复制
import java.io.*;

public class WriteInts {
    public static void main(String[] args) throws IOException {
        DataOutputStream output = new DataOutputStream(new FileOutputStream(
                "data.dat"));

        for (int i = 0; i < 100; i++) {
            output.writeInt(i);
            System.out.println(i);
        }

        output.close();
    }

}

ReadInts:

代码语言:javascript
运行
复制
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;

public class ReadInts {
    public static void main(String[] args) throws IOException {
        DataInputStream input = new DataInputStream(new FileInputStream(
                "data.dat"));

        while (input.available() > 0) {
            int x = input.readInt();
            System.out.println(x);
        }

        input.close();
    }

}
票数 4
EN

Stack Overflow用户

发布于 2014-04-18 04:06:28

更多。如果要生成0到1000 (包括0和1000)范围内的随机数,可以使用以下语句:

代码语言:javascript
运行
复制
int rndNum = (int) (Math.random() * 1001);

它是这样工作的: Math.random()生成一个从0到1(独占)的双精度数,然后您应该将其映射到整数范围和下限。如果你想要你的最大值是1000,你可以将它乘以1001 - 1001本身不包括在内。

是的,就像这样:

代码语言:javascript
运行
复制
import java.io.*;

public class WriteRandomInts {
    public static void main(String[] args) throws IOException {
        DataOutputStream output = new DataOutputStream(new FileOutputStream(
                "data.dat"));

        for (int i = 0; i < 100; i++) {
            int rndNum = (int) (Math.random() * 1001);
            output.writeInt(rndNum);
            System.out.println(rndNum);
        }

        output.close();
    }
}
票数 1
EN

Stack Overflow用户

发布于 2014-04-18 03:33:55

我建议您放弃DataInputStreamDataOutputStream

使用FileWriter将int写入一行,并使用BufferedReader读取它们,每行一个。这是一个简单的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23141851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档