我正在为一个班级做家庭作业,我已经解决了几乎所有的问题,但我正在努力解决一个问题。
对于作业,我们应该编写一个程序来计算任何给定字符串中字母出现的频率,然后将它们的映射打印到控制台。我已经编写了程序,它几乎可以正常工作,但我无法让地图忽略空格。它似乎也找到了两种不同的空格,一种是单词之间的空格,另一种是我无法弄清楚的空格。
在计算字母的频率之前,我已经尝试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() );
}
}