1. 题目如下:
需求说明:定义如下字符串:
			String str = “javajfiewjavajfiowfjavagkljjava”;
	 请分别定义方法统计出:
			字符串中:字符j的数量
			字符串中:字符串java的数量
  1. 算法思路
    1.当知道指定字符串后,通过遍历来字符,来计算指定字符串出现次数;
    2.使用字符串相关的indexOf 、 substring 方法进行统计.
  2. 代码如下
    1.遍历统计
package com.itheima.kuihuabaodian;
import java.util.Scanner;
public class Test02 {
    public static void main(String[] args) {
        String str="javajfiewjavajfiowfjavagkljjava";
        getjcount(str);
        getjavacount(str);
    }
    public static void getjcount(String s){
        int count=0;
        for (int i = 0; i < s.length(); i++) {
            if(s.charAt(i)=='j'){
                count++;
            }
        }
        System.out.println("共有"+count+"个 j 字母");
    }
    public static void getjavacount(String s){
        Scanner sc = new Scanner(System.in);
            int count=0;
            // 将指定字符串拆分成单个字符使用charAt()方法统计
            for (int i = 0; i+3 <s.length() ; i++) {
                if(s.charAt(i)=='j'){
                    if (s.charAt(i+1)=='a'){
                        if (s.charAt(i+2)=='v'){
                            if (s.charAt(i+3)=='a'){
                            // 如果后续字符满足则将计数器变量自增
                                count++;
                            }
                        }
                    }
                }
            }
                System.out.println("共有"+count+"个 java ");
            }
    }

代码输出:
		共有7个 j 字母
		共有4个 java 
		
		Process finished with exit code 0

2.使用字符串相关的indexOf 、 substring 方法进行统计.

package com.itheima.exercise;

/*
 * 	需求说明:定义如下字符串:
		String str = “javajfiewjavajfiowfjavagkljjava”;
	请分别定义方法统计出:
		1.	字符串中:字符j的数量
		2.	字符串中:字符串java的数量
 */
public class MainApp {
    public static void main(String[] args) {
        //1.定义字符串
        String str = "javajfiewjavajfiowfjavagkljjava";
        //2.调用方法,得到字符j的数量
        int count = getCount(str, 'j');
        int count2 = getCount(str, "java");//得到字符j的数量
        //3.打印数量
        System.out.println("字符j的数量:" + count);
        System.out.println("字符串java的数量:" + count2);
    }

    /*
     * 需求:计算大字符串中包含指定字符、字符串的数量
     * 指定方法的名称: getCount
     * 指定方法的参数: String str, char ch
     * 指定方法的返回值: int
     */
    public static int getCount(String str, char ch){
        //1.定义一个变量,用来记录查找到ch的次数
        int count = 0;
        //2.查找str字符串中出现ch字符的次数
        int index = 0;

        while ((index = str.indexOf(ch)) != -1) {//说明查找到了字符ch出现的位置
            count++; //出现的次数累加1
            str = str.substring(index + 1);//更新str字符串中的内容
        }

        return count;
    }

    /*
     * 需求:计算大字符串中包含指定字符、字符串的数量
     * 指定方法的名称: getCount
     * 指定方法的参数: String str, String ch
     * 指定方法的返回值: int
     */
    public static int getCount(String str, String ch){
        //1.定义一个变量,用来记录查找到ch的次数
        int count = 0;
        //2.查找str字符串中出现ch字符的次数
        int index = 0;
        while ((index = str.indexOf(ch)) != -1) {//说明查找到了字符ch出现的位置
            count++; //出现的次数累加1
            str = str.substring(index + 1);//更新str字符串中的内容
        }
        return count;
    }
}

代码输出:
		字符j的数量:7
		字符串java的数量:4
		
		Process finished with exit code 0

代码分析: 使用charAt()方法不方便统计字符串在字符串中的出现次数,只能统计固定的代码出现的位置,而使用indexOf 、substring方法来统计可以灵活的实现指定字符串的次数出现统计.

  • indexOf()方法
    indexOf(String str)
    返回指定子字符串在此字符串中第一次出现处的索引。
  • substring() 方法
substring(int beginIndex) 
 	          返回一个新的字符串,它是此字符串的一个子字符串。
public class exer02 {
    public static void main(String[] args) {
        String s="iloveyouyouloveme";
        System.out.println(s.indexOf("you"));
        s=s.substring(s.indexOf("you"));  
        // 这里传入参数为5,可以看到字符串的前5个元素被取出后剩余字符串被重新赋给str
        System.out.println(s);
        s=s.substring(s.indexOf("you")+1);
        // 对将5+1的参数赋值给substring()方法后可以看到第一个元素达到抹除效果
        System.out.println(s);

    }
}

代码输出:
		5
		youyouloveme
		ouyouloveme
		
		Process finished with exit code 0