コマンドライン引数の数を確認

広告

Java のプログラムに値を指定することで main メソッドに値を渡すことができますが、いくつの値がプログラムの実行時に指定されたのかは main メソッドに引数に指定された配列の長さで確認できます。ここではコマンドライン引数としていくつの値が指定されたのか確認する方法を解説します。

コマンドライン引数の数を確認する

Java のプログラムを実行するときに指定する値のことをコマンドライン引数と呼びますが、コマンドライン引数は一つだけではなく任意の数だけ指定することができます。複数指定する場合は半角スペースを区切り文字として続けて記述してください。

java クラスファイル名 値1 値2 ...

プログラムが実行されると最初に main メソッドが自動的に呼び出されますが、 main メソッドでは String クラスの配列としてコマンドライン引数を受け取ります。

public static void main(String args[]){
  System.out.println(args[0]);
  System.out.println(args[1]);
}

main メソッドでは、コマンドライン引数あ 2 つだった場合は 2 つの要素を持つ配列を受け取ります。 3 つだった場合は 3 つの要素を持つ配列を受け取ります。

main メソッドの中で引数を利用したプログラムを作成する場合、本当にコマンドライン引数をが指定されてプログラムが実行されているのか確認する必要があります。またコマンドライン引数の数だけ何か処理を行うような場合も、コマンドライン引数がいくつ指定されたか確認する必要があります。

確認するには main メソッドの引数に指定された配列の長さで調べることができます。配列の長さは次のように取得できます。

配列変数名.length

例えばコマンドライン引数が必ず 1 つ指定されていなければいけない場合、例えば次のような記述を行います。

public static void main(String args[]){

  if (args.length != 1){
    System.out.println("引数を1つだけ指定して下さい");
    System.exit(1);
  }

  /* 本来行うべき処理 */
}

プログラム実行時に指定されたコマンドライン引数の数を配列の長さで確認し、もし 1 つでなかった場合はメッセージを表示した上でプログラムを終了しています。「System.exit(1)」はプログラムを終了させるための式であり引数に 0 以外を指定するとステータスとして正常ではなく形で終了したことを表します。

コマンドライン引数を利用する場合には、異なった形で引数が指定されて実行された時にプログラムの実行方法を表示するような処理を記述しておくと親切です。

サンプルコード

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 Sample.java という名前で保存します。

class Sample{
  public static void main(String args[]){
    if (args.length != 2){
      System.out.println("引数を2つ指定して下さい");
      System.out.println("Sample 値1 値2");
      System.exit(1);
    }

    System.out.println("「" + args[0] + "」");
    System.out.println("「" + args[1] + "」");
  }
}

コンパイルを行います。

javac -encoding UTF-8 Sample.java

最初に引数なしでプログラムを実行してみます。

java Sample

すると引数を 2 つ指定してくださいとメッセージが表示されました。

コマンドライン引数の数を確認する(1)

次に引数を二つ指定してプログラムを実行してみます。

java Sample Blue Red

コマンドライン引数の数を確認する(2)

今度は指定した引数をそれぞれ画面に出力しました。このように必要な数の引数が指定された状態でプログラムが実行できたかどうかチェックすることができます。

-- --

コマンドライン引数としていくつの値が指定されたのか確認する方法を解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。