私はクラスの宿題を勉強していますが、ほとんどすべてを解決しましたが、1つの部分で苦労しています。文字列トークンを数えながらスペースを無視する
割り当てのために、与えられた文字列の文字の出現頻度を数え、そのマップをコンソールに出力するプログラムを書くことになっています。私はプログラムを書いて、それはほぼ正しく動作しますが、私は空白を無視するようにマップを取得することはできません。 2つの異なる種類の空白も見つかるようです。一つは単語と単語との間のスペースで、私は理解できません。
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());
}
}
文字列の空白を置き換えるコードを参照してください。 –