(Java で) RandomAccessFile オブジェクトを作成し、書き込みと読み取りの両方を行いたいと考えています。私の問題は、私が知る限り、try/catch ブロック内でファイルを作成する必要があるように思われることです。try/catch ブロックの外側で作成してから、ブロック内で次のように初期化しようとすると、
RandomAccessFile valueFile;
try
{
valueFile = new RandomAccessFile("valuefile.txt", "rw");
for (int i=0; i<numOfNums; i++)
valueFile.writeDouble(randomizer.nextDouble()*200);
}
catch (Exception e)
{
System.out.println("Couldn't find the values file.");
System.exit(0);
}
for (int i=0; i<numOfNums; i++)
{
double total = 0;
valueFile.seek(0); // go to beginning of file to start reading it.
}
次に、「報告されていない例外 java.io.IOException; をキャッチするか、スローするように宣言する必要があります」というエラーが表示されます。(「変数 valueFile が初期化されていない可能性があります」というメッセージも表示されます。)
しかし、try/catch 内で作成すると、次のようになります。
try
{
RandomAccessFile valueFile = new RandomAccessFile("valuefile.txt", "rw");
for (int i=0; i<numOfNums; i++)
valueFile.writeDouble(randomizer.nextDouble()*200);
}
catch (Exception e)
{
System.out.println("Couldn't find the values file.");
System.exit(0);
}
for (int i=0; i<numOfNums; i++)
{
double total = 0;
valueFile.seek(0);
}
プログラムの後半で「シンボルが見つかりません:変数値ファイル」が表示されます。それは、valueFile が try/catch ブロックに対してローカルであると見なされているためだと思いますか? しかし、try/catch ブロックに対してローカルにならないように valueFile を作成するにはどうすればよいでしょうか。