スポンサードリンク

【Java】コマンドプロンプトからプログラムにデータを渡す

これまでコマンドプロンプトでは、「javac」でコンパイルし、「java」で実行するという2つの動作しかしてきませんでしたが、実はコマンドプロンプトからJavaプログラムにデータを渡すことができます。

ここではその方法を説明します。

1.コマンドプロンプトからJavaプログラムにデータを渡す方法

これまでJavaプログラムをコンパイルし、実行するときには以下のようにしていました。

C:\Users\ysk\Desktop\java>java Lesson

java」はjavaコマンドで、「Lesson」は実行するJavaプログラム名です。

このJavaプログラム名の後に以下のように半角スペースを入れて引数(データ)をつけると、Javaプログラムにデータを渡すことができます。

なお、渡すデータは1つだけに限らず、半角スペースを入れて引数を書くことで複数のデータを渡すことができます。

C:\Users\ysk\Desktop\java>java Lesson こんにちは こんぱんは

2.データの受け取り

コマンドプロントからJavaプログラムにデータを渡す方法は分かりましたが、どうやって受け取ればいいのでしょうか?

実は何も特別なことはしなくていいのです。なぜなら、既にJavaプログラムにはコマンドプロンプトからデータを受け取る仕組みがあるからです。

それは、今まで当たり前のように書いておきながらも意味不明だったこの部分です。

public static void main(String[] args){

既に配列を学習したのでピーンとくるかもしれませんが、実は「String[] args」はString型の配列になっています(argsは配列名です)。

つまり、コマンドプロントからのデータは、配列argsに代入されるのです。

そのため何もしなくてもコマンドプロントからのデータを受け取れます。

3.データの参照

コマンドプロンプトから受け取ったデータは配列argsに代入されているので、もちろん参照できます。

参照方法は配列と同じで以下のようにします。

args[0]
args[1]
args[2]


4.確認

では実際にコマンドプロンプトからデータをプログラムに渡し、それを出力するサンプルを実行してみましょう。

1.引数を1個渡す

「Lesson043.java」というファイルを作成し、以下のJavaプログラムを入力・保存してください。

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

そして以下のようにコンパイル・実行してください。

なお、javaコマンドでプログラムを実行する際、「こんにちは」などの好きな文字を入力してください(入力がない場合は実行エラーとなります)。

C:\Users\ysk\Desktop\java>javac Lesson043.java

C:\Users\ysk\Desktop\java>java Lesson043 こんにちは
こんにちは

2.引数を複数渡す

「Lesson044.java」というファイルを作成し、以下のJavaプログラムを入力・保存してください。

public class Lesson044{
    public static void main(String args[]){
    	for(int i=0; i<args.length; i++){
		System.out.println(args[i]);
	}
    }
}

上記プログラムでは、複数のデータを受け取ってそれを全て出力したいので、「args.length」でコマンドプロントから受け取ったデータの個数を取得し、for構文で出力するようにしています。

そのため、プログラムに渡すデータの個数は2つでも3つでも4つでもOKです(渡すデータとデータのあいだは必ず半角スペースを空ける!)。

では以下のようにコンパイル・実行してみてください。

C:\Users\ysk\Desktop\java>javac Lesson044.java

C:\Users\ysk\Desktop\java>java Lesson044 おはよう 2013 hogehoge
おはよう
2013
hogehoge

5.渡すデータの中に半角スペースがある場合

コマンドプロントからJavaプログラムに半角スペースを含む「こんにちは 今日も暑いですね」などのデータを渡す場合、そのままだと「こんにちは」と「今日も暑いですね」の2つと判断されてしまうため、この場合は渡すデータをダブルクォーテーションで囲みます。

C:\Users\ysk\Desktop\java>java Lesson044 "こんにちは 今日も暑いですね" hogehoge

コメント

まだコメントはありません。

コメントフォーム
お名前
コメント