解答は
- ホスト: 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 とする。