思うような結果が得られないときに...

System.out.println()によるプログラム動作の確認方法

「設計通りの計算結果が得られない」、「思うような位置に画像が表示されない」、「このタイミングでリペイントがかかるはずなのにかからない」など、アプレットを作成する過程で、当初思い描いていたような結果が得られない場面に度々遭遇することがあるかと思います。そのようなときに、「なぜうまく行かないのか」を自分で突き止めるための有効な方法があります。それがSystem.out.println()、いわゆる“プリント文”、を用いたプログラム動作の確認です。ここではそのやり方を順を追って説明します。

1.System.out.println()とは何か

System.out.println()とは、()内に与えられた引数をコンソールウインドウ(UNIXならば%(コマンドプロンプト)が表示されるウインドウ)に表示する機能を持ったメソッドです。引数としては文字列や、さまざまな型の変数を与えることができます。その動作の要点だけを示すならば、以下のようになります。

たとえば、アプレットのソースコードの、initメソッドの定義の中に

System.out.println("This is my applet");

という一文を書き加えておくと、そのアプレットの実行時に、コンソールウインドウには以下のように

% appletviewer Test.html &

This is my applet

引数として与えた「This is my applet」という文字列がそのまま表示されます。

2.どんな場面で用いると有効か

System.out.println()を以下のような用途に用いることによって、プログラムの動作(の不具合)を確認することができます。

  1. メソッドの呼び出し順序の確認
  2. 計算の過程での変数の値の動きの確認

アプレットが思うように動いてくれない場合、たいていは、「自分が思った通りの順序で処理が行われていない」か、あるいは「自分が立てた計算式が、思うような結果を算出していない」といった点に、つまずきの原因があります。要は、自分が設計した「処理の順序」と「計算式」が、自分の思い描く結果を得るために妥当なものなのかどうかが、アプレットを正しく動作させる上での最も重要なポイントとなるわけです。そして、上記の「メソッドの呼び出し順序の確認」と「計算過程での変数の値の動きの確認」は、それぞれ「処理の順序」と「計算式」の妥当性を確認するための手がかりとなります。

それでは、System.out.println()を用いて「メソッドの呼び出し順序の確認」と「計算の過程での変数の値の動きの確認」をするためには、より具体的にはどのようなソースコードを書けばよいでしょうか。

3.System.out.println()の使い方

System.out.println()の使い方を、先ほどよりも一般的に説明しましょう。

このメソッドは、「引数として与えられた文字列」あるいは「引数として与えられた変数の値」をコンソールウインドウに表示します。それぞれの場合の引数の記述の仕方は次のようになります。

文字列を与える場合

System.out.println("表示させたい文字列");
(表示させたい文字列をダブルコーテーション“”で囲む!)

変数を与える場合

System.out.println(値を表示させたい変数の変数名);
(変数の場合はダブルコーテーションは不要!)

ですから、1で例示したように、「This is my applet」という文字列を“”で囲んで引数に与えた場合、その文字列がそのままコンソールウインドウに表示されることになります。また、変数の場合、たとえば以下のように

int i;

i=7;

System.out.println(i);

7という値の入った整数型の変数iを引数に与えるならば、コンソールウインドウには、

% appletviewer Test.html &

7

という風に、変数iの値、すなわち7がそのまま表示されます。

また、以下のように記述することで、文字列と変数の値を組み合わせて表示させることもできます。

System.out.println("表示させたい文字列" + 値を表示させたい変数の変数名);

たとえば、

int i;

i=8;

System.out.println("i = " + i);

と記述するならば、コンソールウインドウには

% appletviewer Test.html &

i = 8

という風に、「i =」という文字列と、変数iの実際の値である8が、+の記号でつないだ順に表示されます。

4.System.out.println()の使用上の注意・appletviewerの使い方

このSystem.out.println()をアプレットに用いた場合、一つだけ注意すべき点があります。それは、このメソッドが使用されたアプレットを動作させる場合、ブラウザではなく、必ずappletviewerを用いなければならないということです。授業内ではアプレットの動作確認には主にNetscape Navigator を用いていますが、NetscapeではSystem.out.println()によって表示させようとした文字列や変数の値がコンソールウインドウに表示されません。ですから、動作確認のためには必ずappletviewerを用いるようにして下さい。

appletviewerでアプレットの動作確認をしたい場合は、以下のようなコマンドをコンソールウインドウに入力します。

見たいアプレットがローカル(自分のホームディレクトリ以下)にある場合、そのアプレット(.classおよび.htmlファイル)があるディレクトリに移動した上で

% appletviewer abc.html &
(ただしアプレットを表示するhtmlファイルのファイル名がabc.htmlの場合)

と入力します。また、見たいアプレットがインターネット上にある場合は、次のようにそのアプレットのURLを直接入力します。

% appletviewer http://www.sfc.keio.ac.jp/~t00000tt/xyz.html &

5.System.out.println()を用いたサンプル・コードとアプレット

最後に、System.out.println()を用いたサンプル・コードと、実際のアプレットを用意しました。ケース別に二つ用意しましたので、状況に応じて参考にしてください。

「メソッドの呼び出し順序の確認」のサンプル・コードとアプレット

「計算の過程での変数の値の動きの確認」のサンプル・コードとアプレット


> クラスのホームページへ