수업을위한 숙제를 배우고 있으며 거의 모든 문제를 해결했지만 한 부분으로 고민하고 있습니다.문자열 토큰을 계산하는 동안 공백을 무시합니다.
할당을 위해 주어진 문자열에서 문자의 출현 빈도를 계산 한 후 콘솔의지도를 출력하는 프로그램을 작성해야합니다. 프로그램을 작성했는데 거의 제대로 작동하지만 공백을 무시하도록 맵을 가져올 수는 없습니다. 두 가지 다른 종류의 공백도 발견되는 것 같습니다. 하나는 단어 사이의 공간이고 다른 하나는 내가 알아 내지 못하는 공간입니다.
글자의 빈도를 계산하기 전에 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());
}
}
문자열에있는 공백을 대체하려고하는 코드를 볼 수 있습니다. –