黑马程序员---java基础--集合、数组、字符串的综合面试题

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



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。