发布
社区首页 >问答首页 >编译错误-在Java上使用outputStream

编译错误-在Java上使用outputStream
EN

Stack Overflow用户
提问于 2012-09-10 08:02:19
回答 2查看 897关注 0票数 0

我是Java新手,在将一系列随机数写入输出文件时遇到了一些小问题。我需要使用RandomAccessFile和writeDouble。下面是我代码片段,我不知道为什么会发生这种情况。谢谢

代码语言:javascript
代码运行次数:0
复制
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
    }
}

编辑:错误:类型不匹配:无法从空转换为双精度

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-10 08:07:26

这个错误是有道理的。您正在写入一个RAF,并且根据它的API,writeDouble方法返回空。为什么你要设置一个等于这个的数字呢?这句话说不通:

代码语言:javascript
代码运行次数:0
复制
number = outputStream.writeDouble(number);

取而代之的是:

代码语言:javascript
代码运行次数:0
复制
outputStream.writeDouble(number);

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

另外,为什么一开始就使用英国皇家空军呢?为什么不简单地使用文本文件呢?

票数 3
EN

Stack Overflow用户

发布于 2012-09-10 08:08:21

我突然想到三件事:

您使用的是nextDouble().

  • Your而不是
  1. ,IO操作不在nextInt()块内。对抛出异常的任何方法的任何调用都必须在try...catch块内。(或者,如果您正在使用的方法具有签名throws Exception,则try...catch块是不必要的。但在某个地方,如果/当它为thrown.)
  2. The return value of any of the write methods in RandomAccessFile are void.时,您将需要处理异常,因为您无法在变量中捕获它。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12343992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档