我有一个 HashMap 集,我使用 Scanner 从用户那里获取字符串输入。我想获取用户输入字符串,然后通过添加它们在 Hashmap 中表示的值来计算整个消息的宽度。
例如,假设您输入“测试”。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'的值设置为什么。我需要通过 hashmap 运行字符串的每个字母,获取值,并将每个值加在一起。然后得到总和。我知道这需要一个 for 循环来一次遍历字符串中的每个字母。显然,我在代码中遗漏了一些重要部分。
另外,是否可以直接在hashmap中设置存在多少a,存在多少b等?我为此设置了一个灵活的数组列表,可以让我添加/删除字母,但如果我可以在 hashmap 中做到这一点,它会让事情变得更容易。
谢谢!