我是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
}
}
编辑:错误:类型不匹配:无法从空转换为双精度
发布于 2012-09-10 08:07:26
这个错误是有道理的。您正在写入一个RAF,并且根据它的API,writeDouble方法返回空。为什么你要设置一个等于这个的数字呢?这句话说不通:
number = outputStream.writeDouble(number);
取而代之的是:
outputStream.writeDouble(number);
另外,为什么每次迭代for循环时都要创建一个新的RAF?难道您不想在for循环之前创建一个文件,并在循环内向其中添加数据吗?
另外,为什么一开始就使用英国皇家空军呢?为什么不简单地使用文本文件呢?
发布于 2012-09-10 08:08:21
我突然想到三件事:
您使用的是nextDouble()
.
nextInt()
块内。对抛出异常的任何方法的任何调用都必须在try...catch
块内。(或者,如果您正在使用的方法具有签名throws Exception
,则try...catch
块是不必要的。但在某个地方,如果/当它为thrown.)RandomAccessFile
are void.时,您将需要处理异常,因为您无法在变量中捕获它。https://stackoverflow.com/questions/12343992
复制相似问题