JAVAに関する基本的なこと

コマンドラインでの操作(Linuxのシェルでの操作)

JAVAのソースは階層的なパッケージ(package)として管理される。パッケージ内のソースはそれに対応したディレクトリ(フォルダ)の構造として置かれる。

実行時にパラメータ値を与える (コマンドライン引数)

パラメータ値を色々変えてプログラムを実行したいときには、べつべつの実行可能ファイルをつくるのは面倒である。

パラメータはコマンドライン引数で

java hogehoge 1.1 2.5 xxxx.csv

などのように実行時に引数として渡すようにしてみよう。コマンドライン引数はmainメソッドの引数に書いた文字列の配列に渡される。つぎのようなプログラムを実行して確かめることができる。

public class comlineArg {
	public static void main(String[] args) {
		for (int i = 0; i < args.length; i++)
			System.out.println(i + "番目の引数: " + args[i]);

		int param_i=0;
		try {
			param_i = Integer.parseInt(args[0]);
		} catch (Exception e) {
			System.out.println("引数の型があいません: " + e);
			System.exit(1);
		}
		System.out.println(param_i);
	}
}

プログラム例のように、argsは文字列の配列ですから、整数、浮動小数点数などとして用いるには型変換しなければなりません。Integer.parseInt()のようなラッパークラスのメソッドを用います。 たとえば、 http://www.javadrive.jp/start/wrapper_class/index5.html を参照。

Cライクなファイルへの出力方法

ファイル出力のために用意されているクラスはいくつかあるが、Cと同様なフォーマットを指定して出力する PrintWriter を用いるのが便利だと思う。

import java.io.*;                                                // PrintWriterはjava.io.*に含まれている

// 中略

/* file open */
   String filename = "xxxxx.csv";                // 出力先のファイル名
   File outfile = new File(filename);            // ファイルを開く
   PrintWriter outdata = new PrintWriter(outfile);           // 出力先を指定して、PrintWriterインスタンスを生成
   outdata.format("# size=%d, p=%f\n", param_size, param_p); // (例)パラメータの出力

   while(mcs < max_mcs) {                         //シミュレーションの繰り返し
       mcs = simulation.update_system();
       outdata.format("%d,%d,%d\n", mcs,num[0],num[1]);     // (例)結果の出力 Cのprintfと同様に使える。
    }
    outdata.close();

要は、 PrintWriter のインスタンスを生成し、それが有するメソッド format をつかう。 format() はCの printf() と同じように使える。