Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编译错误-在Java上使用outputStream_Java_Compiler Errors - Fatal编程技术网

编译错误-在Java上使用outputStream

编译错误-在Java上使用outputStream,java,compiler-errors,Java,Compiler Errors,我是Java新手,在将一系列随机数写入输出文件时遇到了一点问题。我需要使用RandomAccessFile和writeDouble。这是我的代码图片,知道为什么会发生这种情况。谢谢 private static void numGenerator(int values){ Random generator = new Random(); for (int i = 0; i < values; i++) { double number = generator.

我是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 numGenerator(int值){
随机生成器=新随机();
对于(int i=0;i
编辑:
错误:类型不匹配:无法从void转换为double

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

number = outputStream.writeDouble(number);
相反,只要做:

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


还有,为什么一开始就使用英国皇家空军?为什么不直接使用文本文件呢?

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

number = outputStream.writeDouble(number);
相反,只要做:

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


还有,为什么一开始就使用英国皇家空军?为什么不干脆用一个文本文件呢?

我突然想到三件事:

  • 您使用的是
    nextInt()
    而不是
    nextDouble()
  • 您的IO操作不在
    try…catch
    块内。对引发任何异常的任何方法的任何调用都必须位于
    try…catch
    块内。(或者,如果您正在使用的方法具有签名
    抛出异常
    ,则不需要
    try…catch
    块。但是在某个地方,您需要在抛出异常时处理异常。)
  • 您将无法在变量中捕获它

  • 有三件事突然向我袭来:

  • 您使用的是
    nextInt()
    而不是
    nextDouble()
  • 您的IO操作不在
    try…catch
    块内。对引发任何异常的任何方法的任何调用都必须位于
    try…catch
    块内。(或者,如果您正在使用的方法具有签名
    抛出异常
    ,则不需要
    try…catch
    块。但是在某个地方,您需要在抛出异常时处理异常。)
  • 您将无法在变量中捕获它

  • 我正在尝试获取我生成的随机数,并将它们复制到您正在使用writeDouble执行此操作的文件中。但它不是文本文件。这是一个字节文件。我猜您在这里使用随机访问文件可能是错误的。@user1354275:为了让我们更好地帮助您,请告诉我们更多关于您的目标以及您决定使用随机访问文件(RAF)的原因存储你的数据。我试图获取我生成的随机数,并将它们复制到你正在使用writeDouble执行此操作的文件中。但它不是文本文件。这是一个字节文件。我猜您在这里使用随机访问文件可能是错误的。@user1354275:为了让我们更好地帮助您,请告诉我们您的目标是什么,以及您决定使用随机访问文件(RAF)存储数据的原因。