紙コップ

コマンドライン引数

2009-02-08 14:15:03

Javaコマンドを使ってJavaプログラムを起動する際、プログラムに引数を渡すことが出来ます。



受け取る引数によってプログラムの処理を変えたり、といった事ができます。引数は配列としてプログラムに渡されますが、Java5より可変長配列が使えるようになり、より柔軟な振る舞いをさせることが出来るようになりました。



次に示すソースコードは、従来どおり、配列をプログラムに引数として渡すサンプルです。






/**

* コマンドラインテスト。引数を3つとるパターン

*/



public class TestCmdLine {

  public static void main(String[] args) {

    System.out.println("引数は" + args.length + "つです。");

    //配列の添字は0から始まる事に注意

    System.out.println("1つめの引数:" + args[0]);

    System.out.println("2つめの引数:" + args[1]);

    System.out.println("3つめの引数:" + args[2]);

  }

}





このプログラムに引数を3つ渡してみると、こうなります。







期待通りの動作ですね。では、引数を4つ渡すとどうなるでしょうか?







プログラム内で、4つめの引数を操作する処理が書かれていないので、4つめの引数は無視されていますね。



では、このプログラムに引数を2つ渡したらどうなるでしょうか?







実行時エラーが出ました。プログラム内に3つめの引数を操作する処理があるにも関わらず、3つめの引数がプログラムに渡されていないため、「ArrayIndexOutOfBoundsException」という例外が発生しました。この例外は、配列のインデックスを負の値で指定した時、または配列のサイズ以上のインデックスを指定した時に発生します。今回は、配列のサイズが2なのに、配列の3つめのインデックスを指定したために例外が発生したんですね。



次に、Java5以降で使える、可変長配列を使ったサンプルです。


/**

* コマンドラインテスト2。引数が可変長配列

*/



public class TestCmdLine2 {

  public static void main(String... args) {

    System.out.println("引数は" + args.length + "つです。");

    for(int i=0; i
      System.out.println((i + 1) + "つめの引数:" + args[i]);

    }

  }

}





引数を4つ渡してみます。







期待通りの動きをしていますね。では、引数を5つにしてみましょう。







これでも、きちんと動きますね。今度は、引数を2つにしてみましょう。







問題なく動いていますね。このように、可変長配列を使うことによって柔軟に配列を操作できますね。



ちなみに、引数と引数の間は半角スペースを使いますので、お間違えなく。



この記事が、参考になった、面白かったという方はクリックをお願いいたします!

※このエントリは ブロガーにより投稿されたものです。朝日インタラクティブ および ZDNet Japan編集部の見解・意向を示すものではありません。