gpt4 book ai didi

java - 如何显示字符串中每个字母的出现频率?

转载 作者:行者123 更新时间:2023-12-01 06:49:05 26 4
gpt4 key购买 nike

我希望我的代码显示每个字母的频率,但相反,我收到了 ArrayIndexOutOfBoundsException。我很难发现自己做错了什么。

我该如何纠正这个问题?

这是我的代码:

public static void solution(String s) {
char[] c = s.toCharArray();
int j = 0, i = 0, counter = 0;

for(i = 0; i < c.length; i++) {
counter = 0;
for(j = 0; j < c.length; j++) {
if(c[j] == c[i]) {
counter++;
}
}
}
System.out.println("The letter " + c[j] + " appears " + counter + " times");
}

public static void main(String args[]) {
String s = "abaababcdelkm";
solution(s);
}

最佳答案

您正在已完成的循环之外访问 c[j]:其值等于 c.length,这不是正确的索引。

您需要将 println 语句移至一行,并将 c[j] 更改为 c[i]

我会用 Stream API 重写它:

s.chars()
.mapToObj(c -> (char)c)
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
.forEach((k, v) -> System.out.format("The letter %c appears %d times\n", k, v));

关于java - 如何显示字符串中每个字母的出现频率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52934392/

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