Developer

【はじめてのJava】コマンドライン引数【配列とArrayList編】
2021.07.29
Lv1

【はじめてのJava】コマンドライン引数【配列とArrayList編】

はじめてのJava

このシリーズでは、初めてJavaやプログラミングを勉強する方向けに、Javaによるプログラミングの基礎を説明していきます。
目標レベルは、Javaの資格試験の一つである「Oracle Certified Java Programmer, Silver」(通称Java Silver)に合格できる程度の知識の習得です。
はじめてJavaやプログラムに触れる方にもできるだけわかりやすい解説を心がけていきます。


目次


コマンドライン引数

コマンドライン引数とは、実行時にプログラムに値を渡すことが出来る引数(値)です。
プログラム内で処理に使用する値をコマンドライン引数としてプログラムに渡すことで、プログラムを実行する度に結果を変化させることが出来るようになります。

この記事では、コマンドプロンプトで使用する場合とeclipseで使用する場合について解説していきます。

コマンドプロンプトで使用する場合

コマンドプロンプトで作成したプログラムを実行する場合、
①作成したソースコードをjavacコマンドでコンパイルする。
②javaコマンドでプログラムを実行する。
という手順で実行します。
この手順の②の時に、コマンドライン引数をプログラムに渡すことが出来ます。
以下は実行例の画像です。

上の画像では、javaコマンドで「Sample」プログラムを実行しています。そして、実行時に「Tanaka」や「Suzuki」というコマンドライン引数を渡してプログラムを実行しています。
上の画像から、プログラムの実行結果が渡したコマンドライン引数の値に応じて変化していることが確認できます。
このように、コマンドライン引数を使うことで、プログラムを実行する度にその結果を変化させることが出来るようになります。

こちらが今回実行したプログラムのソースコードです。

public class Sample{
	public static void main(String[] args){
		System.out.println("My name is " + args[0] + ".");
	}
}

ソースコードの2行目の「args[0]」という部分がコマンドライン引数に関する記述です。
プログラム実行時に渡されるコマンドライン引数は、「args」という配列に格納されます。そして、通常の配列のように「args[0]」のようにインデックスと併せて指定することでコマンドライン引数を処理に組み込むことが出来ます。
以前に配列を使う時は配列を宣言する必要があると説明しました。今回使った配列argsも例にもれずコードの中で宣言されています。その場所はソースコード2行目の「public static void main(String[] args){」の部分です。後の項目に関わってくるので、今回の記事では詳しい説明は割愛します。今回は、「main(String[] args)の部分で配列argsが宣言されているため、ソースコードの中で配列argsを使うことが出来る」という点を押さえておきましょう。

また、コマンドライン引数は「java Sample Tanaka Suzuki Sato」のようにスペースで区切って指定することで複数渡すことが出来ます。
渡された複数のコマンドライン引数は、記述された順に配列argsに格納されていきます。

以下は、コマンドライン引数と配列argsとの関係を示した図です。

配列argsを扱う際の注意点は、通常の配列を扱う際と変わりありません。
要素の存在しないインデックスを指定すると実行時エラーになる、等です。
例えば、今回作成したプログラムを実行する際に、コマンドライン引数を一つも指定しないと実行時エラーとなります。

実行結果


この場合、コマンドライン引数を一つも指定していないのでプログラム実行時の配列argsは空の配列となっています。
しかし、ソースコードの中ではargs[0]という要素にアクセスしようとしています。結果として、配列argsに対して存在しない要素にアクセスしようとして実行時エラーとなってしまいます。
コマンドライン引数を使ったプログラムは上記のような予期せぬエラーが発生することがあるので注意しましょう。

eclipseを使用する場合

eclipseで実行するプログラムにコマンドライン引数を渡したい場合について解説します。
以下はeclipseで実行するプログラムにコマンドライン引数を渡す場合の手順です。
①「パッケージ・エクスプローラー」内の実行したいプログラムを右クリックする。

② 実行タブ内の「実行の構成」を選択する。


③ 表示されたウィンドウで、javaアプリケーションから実行したいプログラムを選択し、引数タブを開く。


④「プログラムの引数」にプログラムに渡したいコマンドライン引数の値を入力し、実行を選択する。

実行を選択するとプログラムが実行されて実行結果が出力されます。

以上の手順でプログラムにコマンドライン引数を渡してプログラムを実行することが出来るようになります。
また、一度この設定をしたプログラムを実行する際は常に設定したコマンドライン引数が渡されて実行されるようになります。

プログラムに渡すコマンドライン引数を変更する場合は、④で記述した「プログラムの引数」の値を書きかえることで変更できます。
また、複数のコマンドライン引数を渡す場合は、④で記述した「プログラムの引数」の中にスペースで区切って値を入力することで複数渡すことが出来ます。


確認問題

コマンドプロンプト上で「Sample」プログラムを実行する際に、コマンドライン引数「Tanaka」を渡して実行するコマンドとして正しいものを選びなさい。
A:java Sample Tanaka
B:java Sample.java Tanaka
C:javac Sample Tanaka
D:javac Sample.java Tanaka

解答
A

ポイント

・コマンドライン引数を使うことでプログラムを実行する度に実行結果を変化させることが出来るようになる。
・コマンドライン引数の値が格納されるargsは配列であるため、使用する場合は指定するインデックスの値に注意が必要である。


はじめてのJavaシリーズの目次はこちら


java 11 の練習問題一覧はこちら