如何创建分析Java中一行文字中字符频率的代码?
我知道我必须使用数组,但我不完全理解数组,而且我不太清楚如何解决这个问题。我需要包括每个字母(只有大写),数字,空格和6个标点符号("-'.!,
)。
因此,如果用户输入的行为:A-C E'? 099A "
输出应如下所示:
A:2 C:1 E:1 DIGITS:3 SPACES:3 PUNCTUATION:3
答案 0 :(得分:0)
将输入<div class="align-contents">
<div class="profile align">
<div class="PP"></div>
<div class="status"></div>
</div>
<div class="profile align">
<div class="PP"></div>
<div class="status"></div>
</div>
<div class="profile align">
<div class="PP"></div>
<div class="status"></div>
</div>
<div class="profile align">
<div class="PP"></div>
<div class="status"></div>
</div>
</div>
拆分为String
并使用char[]
循环遍历该数组。创建要计数的计数器。对于每个角色,运行检查。
我对this question的主题做了很好的回答。
答案 1 :(得分:0)
您应该使用HashMap。 HashMaps包含键和值对。因此,您可以使用简单的if语句迭代字符串,添加新值(使用count 1)或增加已存在的值。
HashMap<String, Integer> hm = new HashMap<String, Integer>();
for (int i = 0; i < string.length(); i++) {
char c = string.charAt(i);
String s = String.valueOf(c);
if (hm.containsKey(s)) {
int count = hm.get(s);
hm.put(s, count + 1);
} else {
hm.put(s, 1);
}
}
答案 2 :(得分:0)
如果hashmaps听起来太复杂,这是另一种方法
public static void CharSearcher() {
int Counter;
String inputString = "A-C E'? 099A";
char[] charArray = inputString.toCharArray();
for (Counter = 0; Counter < charArray.length; Counter++)
{
int num = 0;
char current = charArray[Counter];
for (int innerCounter = 0; innerCounter < charArray.length;
innerCounter++)
{
if (charArray[innerCounter] == current) {
num++;
}
}
System.out.println(current + ":" + num);
}
}
这将列出所有角色的出现次数,现在您只需调整代码即可按照您想要的方式显示。