当前位置 博文首页 > Anthony_tester的博客:Java字符串篇-6-字符串遍历和统计次数

    Anthony_tester的博客:Java字符串篇-6-字符串遍历和统计次数

    作者:[db:作者] 时间:2021-08-01 14:59

    ????? 前面我们学习String类的一些方法,主要有两类,判断功能和获取功能。接下来,我们利用2个练习题来学会使用String类提供的方法去解决实际的问题。

    ?

    1.字符串的遍历

    ?

    ?????? 遍历这个功能真的是太常用,而且真的是很多面试题的能解答出来的前提条件。目前我们只知道利用for循环去实现遍历输出。

    package string;
    
    public class Demo3_String {
       public static void main(String[] args) {
    
         String st = "Anthony";
         for (inti = 0; i < st.length(); i++) {
            System.out.print(st.charAt(i)+ " ");
         } 
       }
    }

    输出结果:A n t h o n y

    2.统计字符出现次数

    ?

    ?????? 这个问题,相信很多人都在面试过程中遇到过。目前我们只讨论利用String类的方法去实现,集合类的方法我们还没有学习到,先不管HashMap这样的实现代码。

    ?

    需求:一个长字符串,里面包含大写字母,小写字母还有数字,还有其他符号,要求统计出大写字母,小写字母,数字,和其他字符出现次数。例如字符串是这样:AUFEOADFeigeraeg2H424D&bh$3dw#

    ?

    分析:

    1.字符串是由字符组成,字符都是有范围,可以通过范围来判断是否包含该字符

    2.如果包含就让计数器变量自增

    ?

    具体代码实现如下(注释里面步骤和分析步骤结合着看)

    package string;
    
    public class Demo3_String {
    
    	public static void main(String[] args) {
    		
    		String st = "AUFEOADFeigeraeg2H424D&bh$3dw#";
    		
    		// 定义分类的计数器
    		int big = 0;        //用来统计大写字母个数
    		int small = 0; 		//用来统计小写字母个数
    		int num = 0;		//用来统计数字个数
    		int other = 0;		//用来统计其它字符个数
    		
    		// 1. 利用for循环遍历,拿到每一个字符
    		for (int i = 0; i < st.length(); i++) {
    			char c = st.charAt(i);       // 获取到每个字符
    		
    		// 2.对字符进行分类判断,判断是否在对应范围内
    			if(c >= 'A' && c <= 'Z') {
    				big++;				// 如果满足大写字母条件,对应计数器自增
    			}else if (c >= 'a' && c <= 'z') {
    				small++;			// 如果满足小写字母条件,对应计数器自增
    			}else if (c >= '0' && c <= '9') {  
    				// 注意这里不能这样写 c >= 0 && c <= 9,因为'0'是一个字符
    				num++; 				// 如果满足是数字,对应计数器自增
    			}else {
    				other++;
    			}
    		}
    		
    		// 3. 打印不同类型的计数器
    		System.out.println(st + "中大写字母出现 " + big + "次,小写字母出现 " + small
    		+"次,数字出现 "+ num+ "次,其他字母出现 "+other +"次");
    	}
    }
    

    运行结果:

    AUFEOADFeigeraeg2H424D&bh$3dw#中大写字母出现 10次,小写字母出现 12次,数字出现 5次,其他字母出现 3

    ?

    ???? 上面的需求是分类统计,如果出现分别统计每个字符出现个数,那么就要在这个基础上,引入数组,或者集合里面的Map。详情可以看这一篇:https://blog.csdn.net/u011541946/article/details/78304192

    ?

    ?

    cs