Thinkers'Studio
JavaとC言語の自習ツール
args(コマンドライン引数)の使用例

コマンドライン引数

 プログラム起動時に指定する値(コマンドライン引数)は、main メソッドの仮引数として受け取ることができます。

【main メソッドの形式】
  public static void main( String[] args )
 仮引数なので別の名前にしても構いませんが、ふつうは args (引数 arguments の略と思われる)を使います。
 args は String オブジェクトの配列です。

コマンドライン引数の使用例】
 「うるう年判定プログラム」のコマンドライン引数版です。シンプルにするため、例外処理は入れていません。

class IsLeapYear {
    public static void main( String[] args ) {

        if( args.length == 0 || args.length > 2 ) {
            System.out.println( "Usage$ java IsLeapYear year [n]" );
            return;
        }
        int from = Integer.parseInt( args[0] );
        int to = (args.length==2) ? Integer.parseInt(args[1]) : from;
        if( from > to ) {
            int temp = from;
            from = to;
            to = temp;
        }

        for( int year = from; year <= to; year++ ) {
            if( year % 4 == 0 && year % 100 != 0 || year % 400 == 0 ) {
                System.out.println( year + "年はうるう年です" );
            } else {
                System.out.println( year + "年は平年です" );
            }
        }
    }
}
 このプログラムをコマンドラインで実行するときは、たとえば
$ java IsLeapYear 2012   ・・・ と打ち込んで実行すると
2012年はうるう年です    ・・・ と実行結果が表示されます
 この実行例では、コマンドライン引数の数 args.length は 1 で、その内容 args[0] は 2012 です。

 以前のうるう年判定プログラムと比べて、機能を強化しました。以前のコードでは判定する年を定数で代入していたため、別の年を調べるには値を書き直して再コンパイルする必要がありました。 上のコードでは、コマンドライン引数に指定する値を変えれば、次々と調べられます。 また、開始年と終了年を指定すると、その間のうるう年判定ができるようにしました。

 (今回のクイズです)
 上のプログラムをコマンドラインで次のように指定して実行すると、どんな結果になるでしょう。
 (1), (2), (3) のそれぞれについてどんな結果が表示されるか考えてください。

$ java IsLeapYear                   ・・・ (1)
ここに表示される(1)の実行結果は?
$ java IsLeapYear 2100 2000         ・・・ (2)
ここに表示される(2)の実行結果は?
$ java IsLeapYear 2013 2014 2015    ・・・ (3)
ここに表示される(3)の実行結果は?
   (答えは、次回の Java の Tips で ・・・)
前回のクイズの答え: (前回の問題を見る
 (1) は、エ. の「継承」
 (2) は、イ. の「カプセル化」