2012-09-22 82 views
0

我想要一個String str和一個int wSize並使用它來創建一個哈希表。一個例子是解釋我想要的最好方法。Hashtable幫助 - 使用字符串

例如: STR = 「字母」 WSIZE = 2

我希望有一個散列表,看起來像這樣: 人0 LP 1個 pH爲2 公頃3 AB 4 是5 等6

這是我迄今爲止

public static void hashTableCreator (String str, int wSize) { 
    Hashtable ht = new Hashtable(); 
    str = "alphabet"; 
    wSize = 2; 
    String str2; 

    for (int i = 0; i < str.length(); i++) { 
     int value = 0; 
     ht.put(str.substring(i, i + 1), value); 
     value++; 
    } 

    Set set = ht.keySet(); 

    Iterator itr = set.iterator(); 
    while(itr.hasNext()) { 
     str2 = (String) itr.next(); 
     System.out.println(str2 + ": " + 
         ht.get(str2)); 
    } 

    } 
+0

問題是什麼? –

+0

我不明白,你的方法中有參數,但是你正在爲它們設置下一行的值。什麼是參數的要點? – Austin

+0

問題是我將如何去實現我想要的東西。參數供以後使用,這只是我想測試的一個例子。 – ellangog

回答

2

in string.substring(a,b)第一個參數爲零索引,第二個參數爲1索引。 例如:

 "smiles".substring(1, 5) returns "mile" 

,如果你想從字符串得到人的 「字母」,你必須做

  LinkedHashMap<String, Integer> ht = new LinkedHashMap<String, Integer>(); 
int value=0; 
    for(int i=0; i<str.length()-1; i++) { 
     ht.put(str.substring(i, i+2), value); 
     value++; 
    } 
    Set<String> set = ht.keySet(); 
    Iterator<String> itr = set.iterator(); 
    while(itr.hasNext()) { 
     String d = itr.next(); 
     System.out.println(d+ " "+ ht.get(d)); 
    } 
    } 

OUTPUT:人0 LP 1 pH爲2 醫管局3 AB 4 是5 等6

+0

我得到字符串索引越界,因爲當它結束時,我有一個問題 – ellangog

+0

In for: - (i

0
int value = 0; 
for (int i = 0; i < str.length()-1; i++) { 
    ht.put(str.substring(i, i + 2), value); 
    value++; 
} 
+0

爲什麼你在每次迭代時將值初始化爲0? – PermGenError

+0

糟糕我的錯誤.. –

+0

我不是向下選民..:P – PermGenError