------<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自动装箱功能 * 如果这道题你能很轻松的做出来,说明你对以上知识点已经掌握了,只要多加练习,你便会熟练的运用这些知识点。*/
时间: 2024-10-18 05:44:08