读一本书。用Java将dat文件转换为数组
我正在编写的代码有两个类:writeInts和readInts。我写了写东西,随机生成100个介于0和1000之间的数字,并将它们输出到一个数据集。dat文件
readInts应该打开DataInputStream对象,并从数据中读取“原始”数据。dat文件并将100个整数存储在一个数组中。我的问题是,我似乎无法正确读取数据。如果您有任何帮助,我们将不胜感激。谢谢
作者:
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();
}
}
阅读材料:
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();
}
}
}
# 1 楼答案
更多。如果要生成0到1000(包括0和1000)范围内的随机数,请使用以下语句:
它是这样工作的:数学。random()生成一个从0到1(独占)的双精度范围,然后应该将其映射到整数范围和下限。如果你希望你的最大值是1000,你把它乘以1001-1001本身被排除在外
是的,就像这样:
# 2 楼答案
如果要写入二进制数据,请使用DataInputStream/DataOutputStreamScanner用于文本数据,不能混用
作者:
阅读材料:
# 3 楼答案
我建议你放弃
DataInputStream
和DataOutputStream
使用
FileWriter
将一个int写入一行,并使用BufferedReader
读取它们,每行一个。这是一个容易的问题