java编程实现一个方法,由参数给定一个字符串,统计并输出在该字符串中每个字符出现的次数。(用数组方法)

2024-11-10 01:16:14
推荐回答(1个)
回答1:

不好意思,没看清题目,使用数组,修改代码如下,原来的也保留,供参考:



private String[] chars; // 记录字符
private int[] count; // 记录总数

public void countChar(String str) {
// 初始化数组:这里数组长度,使用字符串长度,但实际可能用不上,因为字符串中可能重复
// 不想使用动态数组,比较麻烦,先演示
// 最好使用List,比数组方便
chars = new String[str.length()];
count = new int[str.length()];

for (int i = 0; i < str.length(); i++) {
// 判断字符是否存在
for (int idx = 0; idx < chars.length; idx++) {
if (chars[idx] == null) {
chars[idx] = str.substring(i, i + 1); // 截取1个长度
count[idx] = count[idx] + 1;
break;
}
if (chars[idx].equals(str.substring(i, i + 1))) {
count[idx] = count[idx] + 1;
break;
}
}
}

// 输出结果
for (int i = 0; i < chars.length; i++) {
if (chars[i] != null)
System.out.println("字符[" + chars[i] + "]出现次数:" + count[i]);
}

}

public static void main(String[] args) {
// 测试方法
LetterCount test = new LetterCount();
test.countChar("Adfasadfadaere你你好好");
}
}


原代码如下,有注释,请参考:

import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class LetterCount {
// 统计结果用,采用Character即char做键(Key)
private Map countMap = new HashMap();

public void countChar(String str) {
char[] chars = str.toCharArray();// 将字符串转换成字符char数组
// 循环,开始统计
for (char ch : chars) {
// 判断字符是否存在
if (!countMap.containsKey(ch)) {
// 不存在,在Map中加一个,并设置初始值为0
countMap.put(ch, 0);
}
// 计数,将值+1
int count = countMap.get(ch);
countMap.put(ch, count + 1);
}

// 输出结果
Set keys = countMap.keySet();
for(Character ch : keys){
System.out.println("字符" + ch + "出现次数:" + countMap.get(ch));
}

}

public static void main(String[] args) {
// 测试方法
LetterCount test = new LetterCount();
test.countChar("Adfasadfadaere"); // 注:不支持中文
}
}

亲,如果回答满意,请即时采纳,你的采纳是我回答的动力,谢谢!