目次> 第11章> 11.6 TOPUPPREVNEXT

11.6 順次探索 sequential search

整数の配列 data の先頭から、(dnum - 1)番目まで dnum 個のデータが 入っていると仮定する。テキストフィールドに入力したデータと同じ値が この配列にあるかどうかをしらべ、 あれば何番目かを表示するプログラムを作成しましょう。

プログラム SeqSearch.java

22〜38行目が、テキスト・フィールド inText のアクションリスナの登録です。 inText に Enter が入力されると、 23〜37行目が実行されます。
  1. inText に入力された文字列を取り出し、整数に変換し in に代入します(24行目)。
  2. 等しいものが見つかった時の添字を保存する ind を用意し、 まだ見つかっていないことを示す -1 を代入しておきます(25行目)。
  3. i を 0 から dnum-1 まで変えながら、 data[i] == in となるかどうかを 順に調べ、等しくなったらそのときの i を ind に代入しループを終了します(27〜32行目)。
  4. ループから抜け出したら(34行目)、ind を調べます。 -1 のままだったら29〜30行目が実行されていない、即ち等しいものがなく for のループを完了したことが判ります。 ind が 0 以上であれば、29〜30行目が実行され、ループの途中から34行目に抜け出してきたことが判ります。
34、35行目で resultLabel に長い文字列が設定されますので、36行目で frame のサイズを再設定しています。 アクションリスナの中で frame を使用するためには、15行目に final を指定するか、( frame の値が変更されるために final が指定できない場合は )クラス変数にする(11行目あたりに移動する)必要があります。

実行例 SeqSearch-1.gif     SeqSearch-2.gif


更新日:2005/07/15 TOPUPPREVNEXT