例如,我有一个String数组:
String[] words = {"apple", "peach", "apricot"};如何打印出每个字符串的第一个字母及其相应的频率?
对于上面的例子,我的预期输出是:
a - 2
p - 1我不知道该怎么做。注意,字符串数组的内容是用户定义的,而不是程序中的预定义。
到目前为止,我的情况如下:
Scanner input = new Scanner(System.in);
String[] words = new String[20];
HashMap holder = new HashMap();
for (int i = 0; i < 5; i++) {
System.out.println("Enter word #" + (i + 1) + ": ");
words[i] = input.next();
}
for (int i = 0; i < 5; i++) {
for (int j = 1; j < 5; j++) {
if (words[i].charAt(0) == words[j].charAt(0)) {
freq += 1;
holder.put(words[i].charAt(0), freq);
}
}
}发布于 2016-06-01 14:52:10
我能修好它,这就是我所做的:
for (int i = 0; i < 20; i++){
System.out.println("Enter word #" + (i+1) +": ");
words[i] = input.next();
if (map.containsKey(words[i].charAt(0)))
{
map.put(words[i].charAt(0), (int)map.get(words[i].charAt(0))+ 1);
}
else
{
map.put(words[i].charAt(0), 1);
}
}发布于 2016-06-01 13:24:26
我不想为你做家庭作业,但这里有一个问题.
Arrays.stream(wordArray)
.map(s -> s.charAt(0))
.collect(Collectors.groupingBy(c -> c, counting()))
.forEach((c, f) -> System.out.println(c + " - " + f));在英语中,这一代码:
发布于 2016-06-01 13:37:06
String[] test = { "apple", "clown", "banana", "ant", "batman" };
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
for (int i = 0; i < test.length; i++) {
if (map.containsKey(test[i].charAt(0))) {
map.put(test[i].charAt(0), map.get(test[i].charAt(0)) + 1);
} else {
map.put(test[i].charAt(0), 1);
}
}
for (Entry<Character, Integer> entry : map.entrySet()) {
System.out.println("" + entry.getKey() + " - " + entry.getValue());
}https://stackoverflow.com/questions/37569841
复制相似问题