解答は
- ホスト: earth.mlab.im.dendai.ac.jp
- ディレクトリ: /home/submit/JavaLib/[今日の日付]/[学籍番号]
に提出しなさい。クラスファイル (〜.class) は提出不要。 提出は gFTP 等の ftp ソフトを用いて行うこと。
ブックマークを検索するプログラムを作成しなさい。 ブックマーク名を入力すると、そのURLが得られる。 ブックマークは以下の形式でファイルに保存されているとする。
ブックマーク名,URL ブックマーク名,URL ...
例えば以下のような内容となる。
W3C,http://www.w3.org/ TDU,http://www.dendai.ac.jp/
プログラム起動時にファイルから情報を読み込み、 その情報を HashMap に格納して、 何度でも検索できるようにすること。
main メソッドのあるクラスのクラス名は BookmarkSearcher とする。
ファイルの読み込みについては、以下のプログラムを参考にすること。
import java.io.*; // 使い方: java FieldReader filename class FieldReader { public static void main(String[] args) { try { BufferedReader reader = new BufferedReader(new FileReader(args[0])); while(true) { String line = reader.readLine(); if(line == null) break; String[] field = line.split(","); // "," で区切って配列にする for(int i = 0; i < field.length; i++) System.out.print("\"" + field[i] + "\""); System.out.println(); } } catch(Exception e) { e.printStackTrace(); } } }
" " でくくられた文字列の中に " を書きたい場合には \" と書くことに注意すること。
任意のブックマーク名で検索できるとよい。 キー入力をさせる場合には BufferedReader あるいは Scanner を使うとよい。
BufferedReader reader = new BufferedReader( new InputStreamReader(System.in)); while(true) { System.out.print("検索: "); String line = null; try { line = reader.readLine(); } catch(IOException e) { break; } if(line == null) break; System.out.print("ブックマーク名: "); System.out.println(line); // URLが登録されていれば表示 }
なお、ユーザが Ctrl-d (Windows の場合は Ctrl-z) を入力すると、 readLine() が null を返し、繰り返しが終了する。
欧文を入力すると、そこで使われている全単語の使用回数(出現頻度)を数え、 一覧表示するプログラムを作成しなさい。 HashMap<String, Integer> を使うこと。
欧文は、単語と単語の間が空白で区切られているものとする。 Scanner クラスのメソッド next() を使うと、 1単語ずつ読み込むことができる。
System.out.println("欧文を入力してください(終了: Ctrl-d)"); Scanner scanner = new Scanner(System.in); while(scanner.hasNext()) { String word = scanner.next(); .... }
main メソッドのあるクラスのクラス名は WordCounter とする。
問題2のプログラムをベースに、 一覧が出現頻度順になるよう改良しなさい。
キーの集合からリストを生成し、それを Comparator で並び替えるとよい (違う方法でもよい)。
main メソッドのあるクラスのクラス名は WordCountAndSorter とする。