gpt4 book ai didi

java - 通过 hashmap 的键值逐个字母迭代字符串以获得总和

转载 作者:行者123 更新时间:2023-12-01 14:38:21 25 4
gpt4 key购买 nike

我有一个 HashMap 集,我使用 Scanner 从用户那里获取字符串输入。我想获取用户输入字符串,然后通过添加它们在 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”的值设置为多少。我需要通过 HashMap 运行字符串的每个字母,获取值,并将每个值加在一起。然后得到总和。我知道这需要一个 for 循环来一次遍历字符串中的每个字母。显然,我遗漏了代码中的一些重要部分。

另外,是否可以直接在 hashmap 中设置存在多少个 a、存在多少个 b 等?我设置了一个灵活的数组列​​表,这样我就可以添加/删除字母,但如果我可以在 HashMap 中执行此操作,事情就会变得更容易。

谢谢!

最佳答案

int sum = 0;
for(int i = 0; i < user_input.length(); i++) {
sum += map.get(user_input.charAt(i));
}

您可以避免使用像 Scala 这样的函数式语言的迭代。或者添加一些折叠功能:link

关于java - 通过 hashmap 的键值逐个字母迭代字符串以获得总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16256775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com