- 最後登錄
- 2024-4-30
- 在線時間
- 1 小時
- 註冊時間
- 2007-11-13
- 閱讀權限
- 20
- 精華
- 0
- UID
- 2773931
- 帖子
- 65
- 積分
- 23 點
- 潛水值
- 12145 米
| 回覆中加入附件並不會使你增加積分,請使用主題方式發佈附件。 我就是把txt讀取 跟輸出的地方改過
但是跑出來的結果跟大大的不一樣- //package sliptstring;
- import java.io.*;
- import java.util.*;
- import java.io.IOException;
- import java.io.StreamTokenizer;
- import java.io.StringReader;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.Comparator;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.Map.Entry;
- /**
- *
- * @author marken
- */
- public class SliptString {
- /**
- * @param args the command line arguments
- */
- public static void main(String[] args) throws IOException {
-
-
- String fileName = "test2.txt";
- BufferedReader svalue = new BufferedReader (new FileReader (fileName));
- StreamTokenizer st = new StreamTokenizer (svalue);
- st.lowerCaseMode(true);
- //st.eolIsSignificant (true);
- st.ordinaryChar('.');
- Map<String, Integer> mapWords = new HashMap<>();
- out:
- while (true) {
- int ttype = st.nextToken();
- switch (ttype) {
- case StreamTokenizer.TT_EOF:
- break out; // 這一行才能正確的跳出 while 迴圈
- case StreamTokenizer.TT_WORD:
- // 取得Hashmap內累計的次數
- Integer numWords = mapWords.get(st.sval);
- numWords = (numWords == null ? 1 : ++numWords);
- // 存回次數
- mapWords.put(st.sval, numWords);
- }
- }
- // 依出現的次數排序, 遞減排序,最多次的最前面
- List<Map.Entry<String, Integer>> mapEntries = new ArrayList<>(mapWords.entrySet());
- Collections.sort(mapEntries,new Comparator<Map.Entry<String, Integer>>(){
- @Override
- public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
- return o2.getValue().compareTo(o1.getValue());
- }
- });
- // 印出結果
- BufferedWriter bw = new BufferedWriter
- (new FileWriter("test.txt"));
- for(Map.Entry<String, Integer> entry : mapEntries) {
- bw.write(String.format("%s:%d", entry.getKey(),entry.getValue())+"\r\n");
- }
- bw.close();
- }
- }
複製代碼 ... |
|