単純前方探索の Jiten01.java と同じデータを使います。
public class Nibun01 { public static void main( String[] args ) { System.out.println( "blue".compareTo("green") ); String[] words = { "blue", "green", "red", "white", "yellow" }; String[] imi = { "青", "緑", "赤", "白", "黄"}; int i,j,m; i = 0; j = words.length-1; String s; s = javax.swing.JOptionPane.showInputDialog("検索する英単語を入れてください"); while ( j >= i ){ m = ( i + j )/2; if ( s.equals(words[m]) ){ System.out.println( s + " の意味は " + imi[m] + " です" ); break; } else if (s.compareTo(words[m])>0) { i=m+1; } else { j=m-1; } }//whileの終わり }//mainの終わり }//classの終わり
コンパイルと実行は次のようにします。
$ javac Nibun01.java $ java Nibun01 (ダイアログがでます。redと入力したとすると) red の意味は 赤 です $
どうやって探したかもわかるようにしてみます。
public class Nibun02 { public static void main( String[] args ) { String[] words = { "blue", "green", "red", "white", "yellow" }; String[] imi = { "青", "緑", "赤", "白", "黄"}; int i,j,m; i = 0; j = words.length-1; String s; s = javax.swing.JOptionPane.showInputDialog("検索する英単語を入れてください"); while ( j >= i ){ m = ( i + j )/2; String format = "i=%2d | j=%2d | m=%2d | words[m]=%-10s\n"; System.out.printf(format,i,j,m,words[m]); if ( s.equals(words[m]) ){ System.out.println( s + " の意味は " +imi[m]+ " です" ); break; } else if (s.compareTo(words[m])>0) { i=m+1; } else { j=m-1; } }//whileの終わり }//mainの終わり }//classの終わり
コンパイルと実行は次のようにします。
$ javac Nibun02.java $ java Nibun02 (ダイアログがでます。whiteと入力したとすると) i= 0 | j= 4 | m= 2 | words[m]=red i= 3 | j= 4 | m= 3 | words[m]=white white の意味は 白 です
Jiten02.java を参考に、Nibun02.javaを改良し、単語が見つからない時に「見つかりません」と報告するようにしなさい。
Nibun02.javaを元に、violet 紫、brown 茶、などを追加して、正しく引けるかを確認しなさい。