HashMap セットがあり、スキャナーを使用してユーザーから文字列入力を取得します。ユーザー入力文字列を取得し、ハッシュマップで表す値を追加して、メッセージ全体の幅を計算します。
たとえば、「test」と入力するとします。hashmap の t の値は 2、e の値は 3、s の値は 3、t の値も 2 です。値をすべて足すと 10 になります。
System.out.print("How much width do you want i to have? ");
int i = input.nextInt();
System.out.println("\nEnter the string input:");
Scanner scan = new Scanner(System.in);
String user_input = scan.nextLine();
Map<String,Integer> map = new HashMap<String,Integer>();
map.put("a", i*2);
map.put("b", i*2);
map.put("c", i*2);
map.put("d", i*2);
map.put("e", i*3);
map.put("f", i*2);
map.put("g", i*2);
map.put("h", i*2);
map.put("i", i*1);
...down to z
ご存知のように、すべてのキーの値は i の値に関連しているため、値を i*n に設定しています。
私は試した:
int count = map.containsKey("a") ? map.get("a") : 0;
map.put("a", count + 1);
しかし、それは単にキー「a」の値が何に設定されているかを教えてくれます。文字列の各文字をハッシュマップで実行し、値を取得して、各値を加算する必要があります。次に、合計金額を取得します。文字列内の各文字を一度に 1 つずつ反復するには、for ループが必要になることはわかっています。明らかに、コードの重要な部分が抜けています。
また、ハッシュマップに a がいくつ存在するか、b がいくつ存在するかなどを直接設定することは可能でしょうか? 文字を追加/削除できる柔軟な配列リストを設定しましたが、ハッシュマップでそれを行うことができれば、作業が簡単になります。
ありがとう!