コマンドライン引数

mainについている文字列の配列

プログラムの中のmainの部分に文字列の配列があります。

public static void main( String[] args ) {

これはargsという名前の文字列の配列の宣言です。

次のように書いても同じです。

public static void main( String args[] ) {

args は変数名なので何を使ってもいいのです。人によっては 別の名前を使います。

public static void main( String[] argv ) {

この配列はコマンドライン引数を受け取るためにあります。

コマンドライン引数

コマンドライン引数とは、次のようなものです。

$ java ArgTest 10 20 abc



ArgTest という java プログラムにとって、10 20 abc が引数となります。(コマンドラインという言葉はDOSプロンプトなどで命令を1行に書いてEnterで実行させるところから来ています)この引数が、次の main の(  )の中の文字列の配列に読み込まれます。

public static void main( String[] args ) {

その結果空白を区切りとして3つの要素があると判断され、次のように代入されます。

args[0]args[1]args[2]
1020abc

使い方

ファイル名 ArgTest.java

/** コマンドライン引数のテスト */
public class ArgTest { 
       public static void main( String[] args ) {
               System.out.println ( args[0] );
               System.out.println ( args[1] );
               System.out.println ( args[2] );
       } 
}

コンパイル後実行すると次のようになります。

$ java ArgTest 10 20 abc
10
20
abc

このプログラムは args[2] を参照していますから、引数が3より少ないと実行時にエラーになります。

課題

1.

コマンドラインから2人の名前を受け取って挨拶を表示するプログラムを作りなさい。

ファイル名 Aisatsu2.java

for ( ここを考える ){
    System.out.println( args[i] + "さん こんにちは" );
}
System.out.println( "あいさつがおわりました。" );

次のように表示されます。

$ java Aisatsu2 鈴木 田中
鈴木さん こんにちは
田中さん こんにちは
あいさつがおわりました。

2.

上記のプログラムでは引数の数が2以外では例外が発生します。args.lengthを使って引数がいくつの時でも,引数の数だけ挨拶をするプログラムにしなさい。プログラムファイル名は同じ。

ファイル名 Aisatsu2.java

3.

2つの引数を入れて実行すると、足し算をするプログラムを作りなさい。

ファイル名 Tasu.java

/** 2つの引数の和を求める */
public class Tasu { 
    public static void main( String[] args ) {
        int a = Integer.parseInt( args[0] );
        int b = Integer.parseInt( args[1] );
        System.out.println ( a + b );
    }
}

これは引数が2つだけですから,forを使う必要はないでしょう。

ただし,コマンドライン引数は必ず文字列です。 10 は 10 でなくて、"10" なのです。もし、次のようにそのまま + で演算すると結果は足し算でなく連結になります。

System.out.println ( args[0] + args[1] );

これを数値として使用するためには、変換が必要です。次の様にします。

Integer.parseInt( args[0] )

これで、args[0] が "10" の時に、10という数値を得ることができます。このまま計算をすることもできますし,次のようにint型の変数に代入することもできます。

int a = Integer.parseInt( args[0] );

もし,doubleにする必要があるなら次のようにします。

double a = Double.parseDouble(args[0]);

4.

3.のプログラムは引数が2つでなければうまくいきません。そこで,引数の数を先に調べて2でないときには「引数は2つです」と注意を促すようにしなさい。if文を使用します。プログラムファイル名は同じ。

ファイル名 Tasu.java

もくじ

聖愛高等学校
http://www.seiai.ed.jp/
Last Modified