为什么这段代码写入/打印所有0.0而不是不同的随机数?

问题描述 投票:2回答:3

我正在尝试生成随机数并将它们写入文件,然后打印它们。相反,诸如此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等等。

java file random
3个回答
2
投票

我们使用PrintWriter而不是DataOutputStream写入文件的原因更好地解释了here

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();
    }
}

也,

  1. 你没有使用rand
  2. 使用printWriter.println()将在每行写入文件后添加换行符。

0
投票

DataInputStream / DataOutputStream类以二进制格式读/写数据。而扫描仪以文本格式读取数据。

这意味着您正在为文件写入等价的整数60,并且在读取时,您正在尝试读取字符串“60”。

简而言之:

  • 如果您正在阅读使用DataInputStream编写的数据,请使用DataOutputStream
  • 如果您使用Scanner写入文件,请使用FileReaderFileWriter

-1
投票

您的代码不使用rand。如果我在你的情况下,我会使用PrintWriter或BufferedWriter,它使它更简单

© www.soinside.com 2019 - 2024. All rights reserved.