我正在尝试生成随机数 并将它们写入文件,然后打印。 而是在控制台中逐行打印所有零(例如0.0) 并在文件中以ASCII码编写。
我已经使用不同的java输入类和随机数生成器进行绑定了。
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
import java.util.Random;
public static void main(String[] args) throws IOException {
makefile(10, "inputHW02.txt");
double[] sizearray0 = new double[10];
int i = 0;
Scanner inFile;
inFile = new Scanner(new File("inputHW02.txt"));
while (inFile.hasNextDouble()) {
sizearray0[i] = inFile.nextDouble();
i++;
}
for (int r = 0; r < sizearray0.length; r++)
System.out.println(sizearray0[r]);
inFile.close();
}
public static void makefile(double n, String filename) throws IOException {
FileOutputStream writer = new FileOutputStream(filename);
DataOutputStream dos = new DataOutputStream(writer);
Random rand = new Random();
for (int i = 0; i < n; i++) {
dos.writeInt((int) 60);
;
}
if (writer != null) {
writer.flush();
writer.close();
}
}
我希望文件和输出控制台中的新随机数应分开 诸如 10.0 23.0 1.0 等等。
答案 0 :(得分:2)
here可以更好地解释为什么我们在PrintWriter
上使用DataOutputStream
来写入文件的原因。
public static void makefile(double n, String fileName) throws IOException {
FileWriter fileWriter = new FileWriter(fileName);
PrintWriter printWriter = new PrintWriter(fileWriter);
Random rand = new Random();
for (int i = 0; i < n; i++) {
printWriter.println(rand.nextDouble()); // <--- observe this
}
if (printWriter != null) {
printWriter.flush();
printWriter.close();
}
}
还
rand
。printWriter.println()
,它将在每行写入文件后负责添加换行符。答案 1 :(得分:0)
DataInputStream
/ DataOutputStream
类以二进制格式读取/写入数据。扫描程序以文本格式读取数据。
这意味着您正在将整数60的二进制等效项写入文件,而在读取时,您正在尝试读取字符串“ 60”。
简而言之:
DataInputStream
写入的数据,请使用DataOutputStream
。Scanner
来写文件,请使用FileReader
或FileWriter
。答案 2 :(得分:-1)
您的代码未使用rand。如果您遇到这种情况,可以使用PrintWriter或BufferedWriter,它使操作变得更简单