java--给一个字符串,求出每个字符的出现次数及单个字符出现次数

//给一个字符串,求出每个字符的出现次数

	//因为Map集合的key是唯一的(put两个相同的key时,后者会把前者value覆盖),所以这里可以用Map集合来做,相同的字符就相当于key,没出现一次value就加一次
	//Map<字符的种类,字符出现次数>
	//总结思路:
	/*
	 * 1.字符串转为字符数组
	 * 2.创建Map集合
	 * 3.遍历字符数组,取出每一个字符,判断集合里是否有这个key,如果没有的话 put到数组 value为1,如果有的话value再加一
	 * 4.打印集合
	 * */
public static void main(String[] args) {
	findcount3("ababcbddjac");
}
public static void findcount3(String s){
	char[] cs = s.toCharArray();	//将字符串变为字符数组
	Map<Character,Integer> mps = new HashMap<Character,Integer>();	//创建map集合,key是那些相同的字符,value是每个字符出现的次数
		
	for(char c : cs){	//循环遍历字符数组
		char ch = c;	//循环取出每一个字符
		if(mps.containsKey(ch)){	//判断这个集合中是否有这个字符
			int value = mps.get(ch)+1;	//get(ch)获取key为ch的值,也就是这个字符的值,因为要计算这个字符出现的次数,所以要加1之后再重新put到集合中
			mps.put(ch, value);
		}
		else{
			mps.put(ch, 1);		//如果没有这个字符就put到这个集合中,值为1
		}
	}
	System.out.println(mps);
		
}
//定义一个字符串 统计某个字符在字符串中出现的次数

	//实现思路分析:
	//1.控制台输入一个字符串 输入一个字符 
	//2.把字符串中的字符一个一个的提取出来 
	//可以对字符串进行截取 
	//可以把字符串转换为字符数组
	//3.通过循环遍历出字符串的单个字符和查找的字符进行比较 
	//4.如果字符串的某一个值和查找的字符相等 计数器++
	
public static void main(String[] args) {
	String s = "llhellowordll";
	char c = 'l';
	findcount1(s,c);
	findcount2(s,c);
}

public static void findcount1(String s,char c){
		//1.字符串截取
		int count = 0;	//定义一个计数器
		for(int i=0; i<s.length(); i++){	//循环字符串的长度,便于截取单个字符
			String str = s.substring(i, i+1);	//substring截取字符,当i=0时,截取的是字符串的第一个字符,依此类推
			char c2 = str.charAt(0);	//String类型和char类型不能通过equals(比较字符串)进行比较,所以要用charAt将得到的单个字母变为char类型(String转为char)
			if(c2 == c){	//和传进来的相等,计数器++
				count++;
			}
		}
		System.out.println(count);
}

public static void findcount2(String s,char c){
		//将字符串转为数组
		int count = 0;
		char[] cs =  s.toCharArray();	//字符串转为数组
		for(int i=0; i<cs.length; i++){
			if(cs[i] == c){
				count++;
			}
		}
		System.out.println(count);
	}

你可能感兴趣的:(Java小题)