readInts应该打开一个DataInputStream对象,从data.dat文件中读取"原始"数据,并将100个整数存储在一个数组中。我的问题是我似乎无法正确读取数据。如有任何帮助,我们将不胜感激。谢谢
writeInts:
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:
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();
}
}
}
如果要写入二进制数据,请使用DataInputStream/DataOutputStream扫描仪用于文本数据,您不能将其混合。
WriteInts:
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:
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();
}
}
更多。如果你想生成一个范围从0到1000(包括0和1000(的随机数,你可以使用以下语句:
int rndNum = (int) (Math.random() * 1001);
它是这样工作的:Math.random((生成一个范围从0到1(互斥(的双精度,然后应该将其映射到整数范围和下限。如果您希望最大值为1000,则将其乘以1001-1001本身被排除在外。
是的,就像这样:
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();
}
}
我建议您放弃DataInputStream
和DataOutputStream
。
使用FileWriter
将int一个写入一行,并使用BufferedReader
读取,每行一个。这是一个容易的问题。