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ループの前に1つのファイルを作成し、ループ内でそのファイルにデータを追加しませんか?

また、なぜ最初にRAFを使用するのですか?単純にテキストファイルを使用してみませんか?

于 2012-09-10T00:07:25.597 に答える
2

私に飛び出す3つのこと:

  1. nextInt()の代わりに使用していますnextDouble()
  2. try...catchIO操作はブロック内にありません。例外をスローするメソッドの呼び出しは、ブロック内にある必要があります。try...catch(または、使用しているメソッドに署名throws Exceptionがある場合、try...catchブロックは不要です。ただし、どこかで、例外がスローされた場合に処理する必要があります。)
  3. の書き込みメソッドの戻り値RandomAccessFileは無効です。 それを変数に取り込むことはできません。
于 2012-09-10T00:08:20.953 に答える