2015-09-04 162 views
-1

我有一個字符串數組。 (每個字符串只有一個字符,但爲了使用掃描器,我必須將它作爲一個字符串數組,因爲沒有input.nextchar。) 我想知道字母表中每個字母有多少在數組中,然後創建基於哪個字母最多的if語句。 我該怎麼做? 我是初學者,所以請用最簡單的方式解釋。 非常感謝你的幫助!計算字符串數組中的每個字母字符Java

+1

您可以使用['String#toCharArray'](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#toCharArray--)或['String#charAt '](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#charAt-int-)從字符串中獲取字符。然後使用['Character#isAlphabetic'](https://docs.oracle.com/javase/8/docs/api/java/lang/Character.html#isAlphabetic-int-) – MadProgrammer

+0

如果您完全不知道在何處請看Patricia Shanahan的優秀網頁,因爲它會給你一些想法:[開始編寫程序](http://www.patriciashanahan.com/beginner.html),這是打破大項目的關鍵過程分成小步驟,然後逐個解決每個小步驟。如果你仍然有問題,那麼你可能想考慮與你的老師交談,或者向我們展示你所做的事情,並且提出一個**更具體的問題或一組問題。祝你好運! –

+0

在設計算法之前,再分析一下這個問題。字母表通常是書寫系統中使用的字母的子集,字母不是書寫系統中的唯一字符。另外,字母通常具有大寫和小寫形式。這些問題是否適用於您的輸入? –

回答

0

爲每個字符創建一個散列表作爲其鍵值並計入其值。 (默認值爲0)。 迭代您的字符串數組,從hashmap中獲取每個字符,增加計數並將其設置回來。

因此,迭代結束時,您將全部算作字母字符。

然後繼續通過您的進一步編碼。

如果需要,然後根據值對hashmap進行排序。

1

您可以使用HashMap其中鍵是字母,值是出現次數。例如:

Map<String, Integer> letterCount = new HashMap<String, Integer>(); 

for (String letter : letters) { //letters is your array of strings 
    if (letterCount.containsKey(letter)) { 
     letterCount.put(letter, letterCount.get(letter) + 1); 
    } else { 
     letterCount.put(letter, 1); 
    } 
} 

現在可以檢查特定字母多少次,顯示了這樣的:

int numberOfEs = letterCount.get("E"); 

你也可以遍歷所有的信件通過調用letterCount.keySet(),看看哪一個是最頻繁。

0

你想要做的事情可能最好通過使用char數組來完成。

所以ASCII字符65-90代表字符A-Z。

將它轉換爲int將給你我相信它的ASCII值。 你需要一個int數組來保存26個整數。循環遍歷數組,將每個int轉換爲它的ASCII值並遞增該數組的索引。我沒有嘗試過,但我不明白爲什麼它不起作用。

最後你可以計算出每個字母出現的次數。

此外,我懷疑介紹他收藏會是一個好主意,因爲他是一個初學者。

+0

Java char是一個UTF-16編碼單元,其中一個或兩個編碼Unicode編碼點。每個Unicode的基本拉丁字母(A-Z和a-z)的UTF-16編碼是一個代碼單元。所以,如果輸入是同一個案例中的所有基本拉丁字母,那麼你的算法就可以工作。 –

相關問題