我正在爲一個班級完成家庭作業,我已經解決了幾乎所有的問題,但我正在努力完成一個部分。計數時忽略空格字符串標記
對於作業,我們應該編寫一個程序來計算任何給定字符串中字母出現的頻率,然後將它們的地圖打印出來,並將其映射到控制檯。我已經編寫了程序,它幾乎可以正常工作,但我無法讓地圖忽略空白。它似乎也發現了兩種不同的空白,一種是詞語與另一種詞語之間的空白,我無法弄清楚。
我試過myString.replaceAll(" ", "");
和myString.trim();
在計算字母的頻率之前試圖消除空白,但它仍然每次都計算兩種類型的空白。
任何見解或幫助表示讚賞。我可以這樣做,但我不喜歡一半的項目。下面是代碼:
import java.util.*;
public class LetterFrequency {
public static void main(String[] args) {
Map< String, Integer > myMap = new HashMap< String, Integer >();
createMap(myMap);
displayMap(myMap);
}
private static void createMap(Map< String, Integer > map) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter a string:");
String input = scanner.nextLine();
System.out.println("String: "+input);
String[] tokens = input.split("");
for (String token : tokens) {
String letter = token.toLowerCase();
if (map.containsKey(letter)) {
int count = map.get(letter);
map.put(letter, count + 1);
}
else
map.put(letter, 1);
}
}
private static void displayMap(Map< String, Integer > map) {
Set<String> keys = map.keySet();
TreeSet<String> sortedKeys = new TreeSet<String>(keys);
System.out.println("\nMap contains:\nKey\t\tValue");
for (String key : sortedKeys)
System.out.printf("%-10s%10s\n", key, map.get(key));
System.out.printf(
"\nsize: %d\nisEmpty: %b\n", map.size(), map.isEmpty());
}
}
讓我們看看你的代碼試圖替換字符串中的空格 – 2012-04-15 22:42:07