特定のURLアドレスに関連付けられている単語の数を数え、出現した単語の数順に単語を印刷しようとしています。現在、ファイルを読み込んで単語をカウントしますが、パッセージ全体のカウントではなく、行ごとに出力します。それがすべてを読んで、それらの出現とともに全体のパッセージの単語を印刷するのを手伝うことは素晴らしいでしょう。
public static void main(String[] args)
{
try {
URL url = new URL("http://webpagehere.txt");
BufferedReader reader = new BufferedReader
(new InputStreamReader(url.openStream()));
String line;
int i=0;
while ((line = reader.readLine()) != null) {
i++;
System.out.println("Line " + i + "\t" + line);
// Create a TreeMap to hold words as key and count as value
Map<String, Integer> map = new TreeMap<String, Integer>();
String[] words = line.split("[ \n\t\r.,;:!?(){}]");
for (int j = 0; j < words.length; j++) {
String key = words[j].toLowerCase();
if (key.length() > 0) {
if (!map.containsKey(key)) {
map.put(key, 1);
}
else {
int value = map.get(key);
value++;
map.put(key, value);
}
}
}
// Get all entries into a set
Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
// Get key and value from each entry
for (Map.Entry<String, Integer> entry: entrySet)
System.out.println(entry.getKey() + "\t" + entry.getValue());
}
reader.close();
} catch (UnknownHostException e) {
JOptionPane.showMessageDialog(null, "Unknown host. Abort.");
} catch (NoRouteToHostException e) {
JOptionPane.showMessageDialog(null,
"Cannot reach remote host. Abort.");
} catch (java.lang.Exception e) {
e.printStackTrace();
}
}
}