【发布时间】:2018-11-11 15:26:36
【问题描述】:
我需要计算一个字母在字符串中出现的频率。
为此,我考虑过使用扫描仪对象,将字符串传递给它
扫描仪 s = 新的扫描仪(字符串)
并使用 next() 方法通过 switch 语句分析每个字符。
我在这些板上进行了搜索并设计了以下内容:-
for (int i = 0; i < outputString.length(); i++) {
Scanner s = new Scanner(outputString);
char letter = s.next().charAt(i);
switch (letter) {
switch code;
}
当我正在分析的字符串包含除空格以外的任何内容(-_z1 等)时,这似乎有效,这将导致程序抛出 String.IndexOutOfBoundException (4)。
还有什么我可以尝试的,或者我应该从单词中删除所有空格(即我正在考虑通过使用 for 循环创建一个新单词字符串来添加每个 string.charAt(i) != ' ') .
编辑:我忘记了扫描仪在 for 循环中,我将其取出。其次,不确定它是否会发生变化,但我正在尝试计算字符串中字母表中每个字母出现的次数,而不仅仅是一种字母。感谢您的 cmets!
提前致谢,
【问题讨论】:
-
这段代码没有多大意义。如果目标是遍历 outputString 的每个字母,为什么要创建一个 Scanner 并调用 next(),而不是直接获取 outputString 的索引 i 处的字符?
-
我了解您要达到的目标,但这是一种复杂的方式。为什么不获取String对象中的String,然后直接手动检查呢?
-
@JBNizet - 我不确定,它一定已经跳过了我的想法。我现在已将其更改为 outputString.charAt(i),它更简洁 - 无需删除任何空格!