目次> 第5章> 5.1 TOPUPPREVNEXT

5.1 コマンド・ラインからの入力

下図のDOS画面で、下線をひいた部分をコマンド・ラインといいます。

../java/comp/Compute1-2.gif

ここでは、上図の最後の行のように入力した時、45と23の和・差・積・商を ウィンドウに表示するプログラムを考えます。

実行した後のイメージは次のようになります。

../java/comp/Compute1-1.gif

【プログラム】
上記の計算と表示をするプログラム Compute1.java をダウンロードして、コンパイルと実行をしてみてください。
【処理の手順】
  1. フレームを作成し、frame という名前をつける。 「クローズ」された際の処理を指定しておく (10〜11行目)。
  2. フレームのコンテントペインに pane という名前をつけ、 レイアウトを FlowLayout にする (12〜13行目)。
  3. コマンド・ラインの一つ目の数値を手に入れ、arg1 という名前をつける (15行目)。
    コマンド・ラインのデータ についての概略を理解しましょう。きちんと理解するには、 配列についての知識が必要ですが、 とりあえず15〜16行目の意味を理解しておきましょう。

    ここでは、String (文字列ともいいます)と、 int 型の2つのデータ型がでてきます。 args[0]args[1] で 得られる 4523 は文字列です。 "45"+"23" とすると 68 という答えを出してくれるプログラミング言語もありますが、 我々の Java言語では、"4523" になります。 数値として「足し算」をしたければ int型に変換をする、 という約束になっています。

  4. コマンド・ラインの二つ目の数値を手に入れ、arg2 という名前をつける (16行目)。
  5. 2数の和を表示したラベルを生成し pane に貼りつける (18行目)
    和の計算、文字列の連結、ラベルの貼付け についての概略を理解しておきましょう。 式については第6章で説明します。
  6. 2数の差を表示したラベルを生成し pane に貼りつける (19行目)。
  7. 2数の積を表示したラベルを生成し pane に貼りつける (20行目)。
  8. 2数の商を表示したラベルを生成し pane に貼りつける (21行目)。
  9. フレームの大きさを、貼り付けたものにあわせる(23行目)。
  10. フレームを見えるようにする(24行目)。

コマンドラインにデータを与えなかった場合、DOS画面になにやら表示され、 ウィンドウは表示されません――下図(1)。

2番目のパラメタがゼロの場合も、 DOS画面にゼロでの割り算が発生したことが表示され、ウィンドウは 表示されません――下図(2)。

zero divide

このように、予想外の状況になることを、「例外が発生した」といいます。 「Javaが例外を投げた」ともいいます。 べつに予想外でなくてもよいのですが、例外 Exception と考えた方がプログラムが作りやすい場合が多いのです。

例外もJavaの処理の対象ですから、何らかのクラスのインスタンスです。 上図の例の(1)では java.lang.ArrayIndexOutOfBoundsException クラスの例外が投げられ、Compute1.java の 15行目にその原因があることが 表示されています。

配列の説明は11章ですが、ここでは、コマンドラインにデータが 与えられなかった場合には、 args[0] とか args[1] を使うことができない と考えてください。コロンの後ろに 0 が表示されていて、 args[0] が問題となったことが判ります。
(2)では java.lang.ArithmeticException クラスの例外が投げられたこと、 補足情報として ゼロによる除算がおこったこと、および その原因は Compute1.java の21行目にあることが表示されています。

例外の発生に対して、3種類の対処法があります。

  1. 何もしない。発生したことは、DOS画面の表示で判るのだから充分だ、 とする方法。
  2. 例外が発生したことをプログラムで検知して、しかるべき処置をする。
    Javaには、例外の検知のための仕掛けが用意されています。 秋学期に説明します。
  3. 例外が発生しないようにする。
    たとえば、このプログラムでコマンドラインにデータがあるかどうかを まず調べ、データがある場合にだけ見にゆくようにする方法です。 また、このプログラムで arg2 がゼロの時には、 24行目を実行しないようにすればよいのです。
    まったく実行しないのもいいのですが、商として ハイフンを表示するように プログラムを変更してみましょう。(次節へ)

更新日:2006-04-06 TOPUPPREVNEXT

Valid HTML 4.01 Transitional