クラスの宿題に取り組んでいて、ほとんどすべて解決しましたが、1 つの部分に苦労しています。
この割り当てでは、特定の文字列内の文字の出現頻度をカウントし、それらのマップをコンソールに出力するプログラムを作成することになっています。プログラムを作成しましたが、ほぼ正しく動作しますが、マップで空白を無視することはできません。2 種類の空白も見つけたようです。1 つは単語間の空白で、もう 1 つは私にはわかりません。
文字の頻度をカウントする前に空白を削除しよう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() );
}
}