Yahoo奇摩知識+ 將於 2021 年 5 月 4 日 (美國東部時間) 終止服務。自 2021 年 4 月 20 日 (美國東部時間) 起,Yahoo奇摩知識+ 網站將會轉為唯讀模式。其他 Yahoo奇摩產品與服務或您的 Yahoo奇摩帳號都不會受影響。如需關於 Yahoo奇摩知識+ 停止服務以及下載您個人資料的資訊,請參閱說明網頁。

玉賢
Lv 5
玉賢 發問時間: 電腦與網際網路程式設計 · 1 0 年前

JAVA hashtable怎麼寫

請設計一個程式來計算文字資料檔內每個文字出現的次數。這個程式將讀進一個資料檔(message.txt)。該資料檔存放數行英文字,檔案的格式如下: (下面為例子,並非是真正的資料檔)We wish you a Merry Christmas We wish you a merry christmasWe wish you a Merry Christmas and a Happy New Year 這程式要考慮大小寫是有區別的,所以上述文字檔中Merry 出現2次而Happy出現1次,檔案只有英文字沒有任何標點符號,每個文字以空格格開。 1. 讀入資料檔並計算每個文字出現的次數2. 接受使用者的查詢,以上述資料檔為例,若使用者鍵入”Merry”你的程式應回答 2次(因為merry出現2次),若使用者鍵入的字不在該資料檔內,你的程式應做適當的回應並請使用者鍵入另外的字。3. 若使用者鍵入quit則結束程式的執行。 可以利用JAVA中的Hashtable來存放每個文字出現的次數,可以假設該檔案最多含有50個不同的文字,故Hashtableb容量的初始值可以設定為50。

1 個解答

評分
  • MrAYD
    Lv 5
    1 0 年前
    最佳解答

    package hashtable;

    import java.io.BufferedReader;

    import java.io.DataInputStream;

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.IOException;

    import java.io.InputStreamReader;

    import java.util.Hashtable;

    public class HashTab {

    public static void main(String args[])

    {

    try

    {

    String filePath = "D:\\test.txt";

    Hashtable<String , Integer> hashMap = new Hashtable<String, Integer>();

    File fileInfo = new File(filePath);

    if (!fileInfo.exists()) {

    System.out.println("The file is not Exists.");

    return;

    }

    FileInputStream fileStream = new FileInputStream(fileInfo);

    BufferedReader readInfo = new BufferedReader(new InputStreamReader(new DataInputStream(fileStream)));

    String line = "";

    while ((line = readInfo.readLine()) != null) {

    String[] info = line.split(" ");

    for (String data : info) {

    if (hashMap.containsKey(data))

    hashMap.put(data, hashMap.get(data) + 1);

    else

    hashMap.put(data, 1);

    }

    }

    System.out.println(hashMap.toString());

    }

    catch(IOException e)

    {

    System.out.println(e.getMessage());

    }

    }

    }

    2011-01-04 21:51:32 補充:

    這範例 只有讀檔 計數單字出現次數 其他功能起自行練習

還有問題?馬上發問,尋求解答。