0

我是 Java 新手,我在将一系列随机数写入输出文件时遇到了一点问题。我需要使用 RandomAccessFile 和 writeDouble。这是我的代码的一部分,知道为什么会这样。谢谢

private static void numGenerator(int values){
    Random generator = new Random();
    for (int i = 0; i < values; i++) {
        double number = generator.nextInt(200);
        System.out.println(number);
        String outFile = "output.txt";
        RandomAccessFile outputStream = null;
        try{
            outputStream = new RandomAccessFile(outFile,"rw");
        }
        catch(FileNotFoundException e){
            System.out.println("Error opening the file " + outFile);
            System.exit(0);
        }
        number = outputStream.writeDouble(number); //ERROR
    }
}

编辑:错误:类型不匹配:无法从 void 转换为 double

4

2 回答 2

3

这个错误是有道理的。您正在写入 RAF,并且根据其API,writeDouble 方法返回 void。你为什么要设置一个等于这个的数字?这种说法毫无意义:

number = outputStream.writeDouble(number);

相反,只需执行以下操作:

outputStream.writeDouble(number);

另外,为什么要在 for 循环的每次迭代中创建一个新的 RAF?您不想在 for 循环之前创建一个文件并在循环内向其中添加数据吗?

另外,为什么要使用 RAF?为什么不简单地使用文本文件?

于 2012-09-10T00:07:25.597 回答
2

我突然想到的三件事:

  1. 您正在使用nextInt()而不是nextDouble().
  2. 您的 IO 操作不在try...catch块内。对任何引发异常的方法的任何调用都必须try...catch块内。(或者,如果您使用的方法具有签名throws Exception,则该try...catch块是不必要的。但是在某个地方,如果/当它被抛出时,您需要处理异常。)
  3. 任何写入方法的返回值RandomAccessFile都是无效的。 您将无法在变量中捕获它。
于 2012-09-10T00:08:20.953 回答