------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
这道题综合了集合,数组,字符串,字符串缓冲区,自动装箱等知识点,你把这道题做会了,java基础你也就学的差不多了。
问题:
自定义一个段由小写字母组成的字符串统计每个字母出现的次数。
例如:abc,输出结果为:a(1)b(1)c(1)
代码实现及解析
package cn.itcast_test;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
/*自定义一个段由小写字母组成的字符串统计每个字母出现的次数。
* 例如:abc,输出结果为:a(1)b(1)c(1)
*
* 分析。
* 1,需要定义一个键盘录入功能
* 2,需要用一个map集合来接收,为了能够对字母排序这里用TreeMap集合。
* 键:Character
* 值:Integer
* 3,把字符串转换为字符数组。
* 4,遍历字符数组,得到每一个字符
* 5,拿到4中得到的字符作为键到集合中去找值,看返回值
* null:说明该键不存在,就把该字符作为键,1作为值来存储。
* 不是null:说明该键存在,就把值加1,然后重新存储该键和值
* 6,定义字符串缓冲区变量
* 7,遍历集合,得到键和值,按照要求进行拼接
* 8,把字符串缓冲区转换为字符串输出。
*/
public class SumString {
public static void main(String[] args) {
//键盘录入
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个由小写字母组成的字符串");
String s=sc.nextLine();//定义一个treemap集合对象 TreeMap<Character ,Integer> tree=new TreeMap<Character,Integer>(); //把字符串转换为数组。 char[] chs=s.toCharArray();
//遍历数组,并拿到集合中去找值
for(Character key:chs){
Integer value=tree.get(key);
if(value==null){
tree.put(key, 1);
}else{
value++;
tree.put(key, value);
}
}
//定义字符串缓冲区
StringBuilder sb=new StringBuilder();
//遍历集合,并按照要求进行拼接
Set<Character> set=tree.keySet();
for(Character key:set){
int value=tree.get(key);
sb.append(key).append("(").append(value).append(")");
}//把缓冲区对象转为字符串并输出 System.out.println(sb.toString()); } } /** * 写在后面 * 这道题综合考了以下知识点 * 1,集合TreeMap * 2,键盘录入 * 3,字符串和字符串缓冲区对象的转换 * 4,数组和集合的遍历(优先用增强for循环) * 5,字符串缓冲区的拼接功能 * 6,JDK5以后的Character和Integer自动装箱功能 * 如果这道题你能很轻松的做出来,说明你对以上知识点已经掌握了,只要多加练习,你便会熟练的运用这些知识点。*/
黑马程序员---java基础--集合、数组、字符串的综合面试题
原文地址:http://blog.csdn.net/qiushi_1990/article/details/46405071