• 締切済み

ファイル出力

下記のプログラムはランダムな黒い円を10個描くプログラムです。描かれた円の大きさ(wの値)を知りたいのでwの値を1つづつテキストファイルに出力するようにしたいのです。宜しくお願いします。 import ij.*; import ij.process.*; import ij.gui.*; import java.awt.*; import java.util.Random; import ij.plugin.*; public class Random_1 implements PlugIn { public void run(String arg) { IJ.run("New...", "name='Random 1' type='32-bit RGB' width=256 height=256"); drawOvals(); } void drawOvals() { ImagePlus imp = WindowManager.getCurrentImage(); Random ran = new Random(); int width = imp.getWidth(); int height = imp.getHeight(); for (int i=0; i<500; i++) { int w = (int)(ran.nextDouble()*width/16+1); int h = w; int x = (int)(ran.nextDouble()*width-w/2); int y = (int)(ran.nextDouble()*height-h/2); IJ.setForegroundColor((int)(0), (int)(0), (int)(0)); IJ.makeOval(x, y, w, h); IJ.run("Fill"); } } }

みんなの回答

  • Gishi
  • ベストアンサー率57% (11/19)
回答No.3

JDK(Java2 SDK)のバージョンが古いのかも知れません。 new PrintWriter(ファイル名) というコンストラクタを使えるのは、JDK1.5以降です。 もしJDKのバージョンが原因であるならば、 PrintWriter out = new PrintWriter(new FileWriter("test.txt")); を使うとよいでしょう。 すこし手抜きなやり方ですが、 ループの中に System.out.println(w); を書いておいて、 実行するときに、ファイルにリダイレクトする方法もあります。 java SomeMainClass > test.txt ↑こうすると、System.outに出力したデータは 指定したファイルに書き込まれます。

nobruob
質問者

お礼

アドバイスありがとうございます。 PrintWriter out = new PrintWriter(new FileWriter("test.txt")); をやってみましたが同じエラーが出てしまいました。

回答No.2

出たエラーは何ですか? 省略しないでコピーペーストして書いて下さい。 それとどの時点で出ましたか? (コンパイル中? それとも実行中?)

nobruob
質問者

補足

コンパイル中に出たエラー文です。 constructor ????????java.lang.String ?? java.io.OutputStream ?????????? PrintWriter out = new PrintWriter("test.txt"); のtestの前の「"」のところにエラーのマークがついています。

回答No.1

まずループに入る前の所で PrintWriter でファイルを開きます。(下記) PrintWriter out = new PrintWriter("出力ファイル名"); 次に w に値を代入した直後に out.println(w); を入れます。これで w がファイルに出力されます。 最後にループを抜けた所で out.close(); をすればバッファに溜った分も全てファイルに書かれてクローズされます。

nobruob
質問者

お礼

回答ありがとうございます。 import java.io.*; を加えてやってみたところ PrintWriter out = new PrintWriter("test.txt"); の行にエラーが表示されました。 ファイル名の記入の仕方が違うのでしょうか?

関連するQ&A